1.通过使用多级hash缓存:
假如一个hash表数据存储在一个arr[size]数组中,那么元素位置计算方式为:int location = key%size;但是不同key,可能有相同的位置,这样就会造成缓存命中率下降,
解决办法:多维数组,20-25行,每行10000列,根据离散数学余数原理,每行最大元素个数离10000最近的质数最好,而且每行依次递减
例如9997 9991 当key%9997 时,如果存储位置已经存在元素,则key%9991,这样能提高缓存命中率,当然也会有不能加入缓存的元素,对于这部分数据,可以写到磁盘上,索引文件映射到内存中,这样可以通过索引快速定位到数据文件中的数据 ,然后把文件中的数据添加到内存中,这样获取数据反应速度会降低
2.如果对缓存数据可靠性要求高,不考虑多线程情况下,对于共享内存数据读取可以使用volidate(同步)关键字
3.数据大小不同业务对应不同缓存实例,memcache基本单位是page(默认1M),一个slab多个page,一个page多个chunk,item是数据值占的内存的大小,根据chunk大小选择;slab之间大小通过增长因子控制(默认1.25)
通过判断 get_miss/(get_miss+get_hit)、evictions(memcache内存满后删除旧item数目)
来源:CSDN
作者:liujn347
链接:https://blog.csdn.net/liujn347/article/details/18520607