Memcached是一套分布式内存对象缓存系统。

用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的;
memcached在企业应用场景中一般是用来作为数据库的cache服务使用,memcached是通过预分配指定的内存空间来存取数据的,因此它比数据库直接操作磁盘要快很多,可以提供比直接读取数据库更好的性能。

另外,memcached也经常作为集群架构节点应用服务器之间的session数据共享的存储。

1、Memcached服务在应用中的工作流程:
    Memcached是一种内存缓存,在工作中经常用来缓存数据库中的数据,数据被缓存在事先预分配的memcached管理的内存中,可以通过API的方式存取内存中缓存的这些数据,Memcached服务内存中缓存的数据就像一张巨大的HASH表,每条数据都是以key-value对的形式存在。
    memcached通过缓存经常被读取的数据库中的数据,当程序需要访问后端数据库获取数据时会优先访问memcached内存缓存,如果缓存中有数据就直接返回前端服务应用,如果没有数据再转发给后端的数据库服务器,程序服务取memcached内存缓存中没有对应的数据后,除了返回给用户数据外,还会把数据在内存中进行缓存,等待下次被访问,从而大大的减轻数据库的压力,提高整个网站架构的响应速度,提升了用户体验。

2、memcached服务在大型站点中的应用
    几乎所有的网站,当访问量增大时,在整个网站集群架构中最先出现瓶颈的一定是数据库角色的服务器以及存储角色的服务器,在工作中我们是尽量把用户的请求往前推,即当用户请求数据时,越是在靠近用户的一端把数据返回就越好。
    见作者的千万级PV/IP规模高性能高并发网站架构:http://oldboy.blog.51cto.com/2561410/736710

3、memcached负载均衡及分布式应用场景:
    [分布式应用1]
    Memcache支持分布式,我们在应用服务器程序上改造,就可以更好的支持。
    
    [分布式应用2]
    在应用服务器上通过程序及URL_HASH,一致性哈希算法去访问Memcache服务,所有Memcached服务器的地址池可以简单的配在每个程序的配置文件里。
    
    [分布式应用3]
    门户如百度,会通过一个中间件代理负责请求后端的Cache服务。

[分布式应用4]
    可以用常见的LVS,haproxy做Cache的负载均衡,和普通web应用服务相比,这里的重点是调度算法,Cache一般会选择URL_HASH及一致性hash算法。

3、Memcached的特性
    Memcached作为高并发、高性能的缓存服务,具有如下特征:
    (1)协议简单
    memcached的协议实现比较简单,使用的是基于文本行的协议,能通过telnet直接操作memcached服务存取数据。
    (2)基于libevent的事件处理
    简单的说,libevent是一套利用C开发的程序库,它将BSD系统的kqueue,linux系统的epoll等事件处理功能封装成一个接口,确保即使服务器端的连接数增加也能发挥很好的性能。
    (3)内置的内存管理方式
    memcached有一套自己管理的内存的方式,这套管理方式非常高效,所有的数据都保存在Memcached内置的内存中,当存入的数据占满内存空间时,Memcached使用LRU算法自动删除不使用的缓存数据,即重用过期数据的内存空间。
    (4)互不通信memcached之间具有分布特征
    各个Memcached服务器之间互相不通信,都是独立的存取数据,不共享任何信息。通过对客户端的设计,让memcached具有分布式,能支持海量缓存和大规模应用。

memcached缓存基本概念的更多相关文章

  1. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  2. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  3. Memcached缓存入门篇

    Asp.Net中使用Couchbase——Memcached缓存入门篇 前言 本文的主要目的就是简单的进行使用Memcached.这是Memchahed的官网http://memcached.org/ ...

  4. 一,memcached的基本概念

    1,memcached的基本概念 memcached是一个高效的分布式内存对象缓存系统,它可以支持把各种php的数据(array,对象,基本数据类型)放入到它管理的内存中.简单的说,memcached ...

  5. Python项目使用memcached缓存

    前言许多Web应用都将数据保存到MySQL这样的关系型数据库管理系统中,应用服务器从中读取数据并在浏览器中显示. 但随着数据量的增大.访问的集中,就会出现数据库的负担加重.数据库响应恶化. 网站显示延 ...

  6. openstack (3)---------部署memcached缓存服务,keystone服务

    一.memcached概念 Memcached 是一个开源的.高性能的分布式内存对象缓存系统.通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站访问速度,加速动态WEB应用.减轻数据库负载 ...

  7. Memcached 缓存系统简介

    memcached官网:http://memcached.org/ What is Memcached? Memcached是一个自由开源的,高性能,高并发,分布式内存对象缓存系统. Memcache ...

  8. .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  9. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

随机推荐

  1. 【Scala】Scala-None-null引发的血案

    Scala-None-null引发的血案 Overview - Spark 2.2.0 Documentation Spark Streaming - Spark 2.2.0 Documentatio ...

  2. css文件放在根目录之后不起作用原因

    修改为

  3. [Python]多线程入门

    原文:http://blog.csdn.net/ice110956/article/details/28421807 Python的多线程有两种实现方法: 函数,线程类 1.函数 调用thread模块 ...

  4. Apache+wsgi+flask部署

    flask自带的web server是开发用途,并不适用与发布,需要借助专业的web服务器. 配置的坑无数,Apache部署,403禁止,莫名其妙无法访问,500内部错误把我搞得崩溃了. 重点参考: ...

  5. 关于Promise的一些个人理解jQuery的deferred

      一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组), ...

  6. IntelliJ - idea15.0.2 破解方法

    由于idea 15版本更换了注册方式,只能通过联网激活,所以现在不能通过简单的通用注册码进行离线注册了, 虽然可以继续用14版本,但是有新版本却无法尝试让强迫症也是异常抓狂. 通过度娘我找到了一个破解 ...

  7. (纪录片)统计的乐趣 The Joy of Stats (2010)

    简介: 导演: 丹·希尔曼主演: Hans Rosling类型: 纪录片官方网站: www.bbc.co.uk/programmes/b00wgq0l制片国家/地区: 英国语言: 英语上映日期: 20 ...

  8. java注解Annotation的使用实例

    1.注解的定义 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java. ...

  9. 2012年5月阿里巴巴集团”去 IOE”运动的思考与总结【转载+整理】

    原文地址 什么是 IOE,IOE 只是一个简称,分别代表 IBM.Oracle.EMC,确切地说是 IBM 小型机.Oracle 数据库与 EMC 存储设备的组合.这"三驾马车"构 ...

  10. Hibernate缓存研究

    1. 什么是缓存? 数据库的缓存指的是应用程序和物理数据源之间的数据.即把物理数据源的数据复制到缓存.有了缓存,可以降低应用程序对物理数据源的访问频率,从而提高效率.缓存的介质一般是内存,也可以是硬盘 ...