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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值