Memcached:高性能的分布式内存缓存服务器
特征:
u协议简单:
n基于文本行的协议
u基于libevent的事件处理:
n程序库,能实现连接数的增加,O(1)性能
u内置内存存储方式
n数据存储在内存,重启数据消失,在数据达到某个值时,基于LRU(Last Recently Used)算法删除不使用的缓存
uMemcached互不通信的分布式
n服务器端没有分布式功能,实现分布式取决于客户端
n
Memcached的使用:
u保存的方法:
nadd:仅当存储空间不存在相同的数据才保存
nreplace:仅当存储空间存在相同的数据才保存
nset:无论何时都保存
u获取的方法
nget:取一个数据
nGet_multi:取多个数据
u删除数据
ndelete
u增一和减一操作
nincr
nAdd
Slab Allocation机制:分配,管理内存机制
将内存分割成特定长度的块,同样大小的块分成组,根据数据的大小选择合适的分组的块
解决了内存碎片的问题,但产生了浪费内存的问题(如100bytes的数据要存入112的块)
调优:根据数据大小调节组的块大小
Memcached的数据删除方面
uMemcached不会真正的删除数据,也不会监视过期的数据,而是在get的时候检查是否过期,这种技术被称为lazy(惰性)
uLRU即覆盖最近最少使用的数据
Memcached的分布式
u完全由客户端实现:根据键,通过客户端的算法得出存放在哪个memcached服务器,取根据同样的算法来取.
u客户端的函数库Cache::Memcached实现了分布式功能
n根据余数计算分散:即根据服务器台数的余数进行分散,求得键的hash值取余
n缺点:添加或移除服务器,缓存重组的代价大
uConsistent Hashing分散算法
n求出各服务器的hash值,配置到