`

浅析memcached

 
阅读更多

memcach的原理
 概念:Memcached是国外社区网站LiveJournal的开发团队开发的高性能内存缓存服务器,通过缓存数据库的结果,减少数据库访问次数,以提高动态WEB的速度,提高可扩展性;
 运行过程:浏览器首次访问读取的是数据库中的数据,返回的同时保存到memcached中;第二次以后直接访问memcached  
 数据存储方式:Slab allocation:基本原理是先把内存安装指定的大小分割成特定长度的块,并把内存相同的块分成组,以完全解决内存碎片问题;
        1、page:分配给slab的内存空间,默认是1M,分配给slab之后,根据slab的大小分配成chunk;
        2、chunk:存储数据的内存空间
                      3、class:特定大小的chunk的分组
       memcached收到数据后选择最合适的chunk缓存数据,memcached中保存着空闲的chunk列表,根据该列表选择chunk缓存数据;
              slab的缺点:由于是分配了固定大小的内存,因此无法充分利用内存,所以比如在128字节的内存中存储100字节的数据,剩下的28个字节的内存就浪费了。
 数据过期方式:Lazy Expiration +LRU
  Lazy Expiration (懒到期): memcached不会在内部监视数据是否过期,而是在get的时候查看数据上的时间戳,检查记录是否过期;因此memcached不会在过期监视上消耗CPU时间;
  LRU(最近最少使用机制):memcached优先使用过期记录的空间;但即使如此也会发生追加新纪录时空间不足的情况出现,此时就要使用最近最少使用机制来分配内存空间
                因此,当memcached的内存不足时而且又无法总class中获得内存时就会通过最近最少使用机制搜索记录,并将这些记录删掉,将内存分配给新增的记录。
  应用程序---》客户端程序分布式算法----》多个memcached;
        memcached的一些特性和限制:
  memcached中保存的数据量没有限制,只要内存足够;
  memcached最大内存使用是2G,要使用更多的内存可以分多个端口开启多个memcached进程
  最大30天的数据过期时间,设置为永久的也会在这个时间过期;
  最大键长是250个字节,超过该值无法存储;
  单个item的最大长度是1MB,超过1MB的数据不予存储;他是默认的slab大小
  最大连接数是200,最大软连接数是1024

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics