如何提高服务器缓存命中率

ぃ、小莉子 提交于 2019-12-01 03:32:04

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数目)


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!