memcached总结

基于libenvent网络库,单线程,中心思想IO多路复用,http://www.cnblogs.com/daoluanxiaozi/p/3274925.html

特点:

1.基于键值对的缓存系统,储存字符串或者对象(需要实现serializable接口),协议简单,

基于libevnent网络库,内置的内存管理, slab allocations,基于客户端的分布式;

memcached间互不通信,//分布式靠客户端实现,-f 块大小增长因子

内置的内存管理: memcached使用预申请内存并分组成特定块的方式,旨在解决内存碎片的问题。

数据存储方式:slab allocations,有效的防止内存碎片,但会产生内存浪费

数据过期方式:Lazy Expiration + LRU

 不会监控数据是否过去,get查看数据时间戳进行判断

3.分配的内存用完,使用LRU算法 least recently Used

4.支持cas操作,,set,add,replace,prepand,appand

incr,decr

5.cas和gets配合使用

30天,内存最大2G,存储最大1MB

 客户端指定分布式hash算法,

通过stats指令,查看缓存命中率

6.一致性hash算法,添加或减少服务器,减少key的重新映射

原理:将Hash函数的值域空间形成一个hash圆,服务器映射到圆上,整个圆按照顺时针方向组织

,然后使用相同的hash函数,计算出key的hash值并映射到圆上,按照顺时针方向,找到最近的服务器进行存储; 通过虚拟节点,避免服务器分部不均匀;

6.分布式session

Memcache的管理与性能监控
可以通过命令行直接管理与监控也可通过nagios,cacti等web软件进行监控
命令行:

    1. Shell>telnet 127.0.0.1 1211 //如果在启动时指定了IP及端口号,这里要作相应改动
      连接成功后命令 
    2. Stats:统计memcached的各种信息 
    3. Stats reset:重新统计数据 
    4. Stats slabs,显示slabs信息,可以详细看到数据的分段存储情况 
    5. Stats items:显示slab中的item数目 
    6. Stats cachedump 1 0:列出slabs第一段里存的KEY值 
    7. Set|get:保存或获取数据 
    8. STAT evictions 0:表示要腾出新空间给新的item而移动的合法item数目
原文地址:https://www.cnblogs.com/lelouchKOP/p/5785925.html