Memcached默认是采用余数hash策略,这样在增加和减少机器的时候会导致很大部分的Memcached无法命中,可以采用Consistent Hashing(一致性Hash算法)可以有效缓解这个问题。
//php
ini_set("memcache.hash_strategy", "consistent");
同时需要注意以下几点:
1、程序端过滤掉非法请求(必须的)
2、使用一致性哈希算法(地球人都知道,介绍)
3、数据生成时就写入到缓存中,避免预热数据时访问数据库。把缓存当作存储,当查找数据为空的时候就返回0,这样也可以避免空数据查询
4、设置合理的数据过期时间,减少因为数据过期产生的并发穿透
5、设置主从,主从过期时间不同。一方面避免主服务器当机造成的雪崩,另一方面减少因为数据过期产生的并发穿透
关于一致性 hash 算法
http://my.oschina.net/jean/blog/193662