memcached是高性能的分布式内存缓存服务器
memcached的特性:
slab分配器实现内存管理,(linux的内核物理内存管理就是使用slab,而非内核的物理内存管理使用伙伴系统算法,因为使用伙伴算法管理内核的小数据会造成空间浪费)
page(一个slab的大小),chunk(一个page由相同chunk大小的数据组成),slab class(定义chunk大小), growth factor(增加因子)
slab的缺点是会产生内部碎片
由客户端实现互不通信的分布式服务器
已知算法有:
1.使用key的hashcode除以服务器结点数的余数来确定往哪个结点上来存数据,这种算法的缺点当增加或删除结点时,key在结点上的分布会产生巨大的变动
2.使用一致性hash来实现,将结点转换成hash值, 然后将这些结点的hash值分布在0-2的32次方的hash环上,
然后再将key也转成hash值,然后key的hash值也放在hash环上,hash环上在顺时针方向离key的hash值最近的结点hash值即为选中的结点,
这样的好处是,当增加或删除结点时,不会产生全局的key的分布变动,只有将要删除结点的相临结点产生key的分布变化。
当空间不足时,需要释放空间,删除机制使用LRU(least recently used)
memcached提供给存储数据设置过期时间,使用的机制是lazy expiration,即不主动监视数据是否已过期,而是当访问时才查看是否过期。
二进制协议支持和外部引擎(即可持久化存储引擎)支持
=======================================================================================================