1. telnet 127.0.0.1 11211
>> stats ---- 当前memecache的使用状态
2. Consistent hashing:主要贡献是缓存服务器变动时候影响最小
场景:N server === hash(Object)%N
但是:down or add server === all cache disable,冲击后台服务器
单调性是指:如果一些数据已经通过hash算法分配到server缓存中,增加server后,hash的结果应该是保证原有已分配数据可以映射到新的server上,而不被映射到旧的server集合的缓冲区中。简单理解为,server数据的增减不会使得已缓存的数据全部失效(尽量不改变映射关系),或者说原有的hash算法对于已经存储的数据在server增减的情况下依然作为缓存可以取得。
平衡性是指:hash结果尽量均分到所有的缓存,高空间利用率。
Consistent hashing算法:add or remove server时尽量小的改变key的映射关系,尽量满足单调性的需求。
Hash空间、key的映射到hash空间、cache(server的ip或者name)映射到hash空间,key顺时针归于遇到的第一个cache,如果add or remove server时受影响的缓存数据是变化的cache到逆时针遇到的第一个cache之间的数据对象需要重新换缓存。
增加虚拟节点,数据均分到少量server上,避免大多数数据出现在一个server上的情况,例如下面
Hash(“202.168.14.241”);
引入“虚拟节点”后,计算“虚拟节”点 cache A1 和 cache A2 的 hash 值:
Hash(“202.168.14.241#1”); // cache A1
Hash(“202.168.14.241#2”); // cache A2