缓存穿透解决方案

 

1、先查缓存,缓存不存在查数据库,数据库中如果存在则存入缓存
   问题:大量不存在的数据导致数据库的查询频次高,有900多万次;因为该功能上线默认为不存在,所以正常用户访问也是每次都查询
2、先查缓存,缓存中不存在查数据库,数据库如果存在则存结果入缓存;如果不存在则存-1入缓存;
    数据库的查询次数明显降低为不到50万
3、先查bloom过滤器,如果不存在则返回;如果存在则查询缓存,缓存中不存在查数据库,数据库如果存在则存结果入缓存,设置bloom过滤器
    

开发库中memorys表是redis中数据大小

7391未设置之前的信息
127.0.0.1:7391> info
used_memory:857656
used_memory_human:837.55K
设置1000万 bit后的信息:
used_memory:2958968
used_memory_human:2.82M
设置10亿 bit后的信息:
used_memory:126693872
used_memory_human:120.82M
设置100亿 bit后的信息:
used_memory:541955448
used_memory_human:516.85M


设置100万个key为uif:userid,field为aqs,value:-1后
used_memory:121227320
used_memory_human:115.61M
设置1万个最大值为100亿的key为uif:userid,field为aqs,value:-1后
used_memory:2134728
used_memory_human:2.04M

写入1000万个1至文件.txt中,较快,大小为9.53M

在目前的大小下,占用内存较小;

结论:根据最大值和值的稀疏程度来确定使用哪种方案
如果最大值较大且值比较稀,则选择使用方案2;否则可以使用方案1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值