mysql怎么保证热点数据_数据库里有2000W数据,Redis中只存20W的数据,如何保证 Redis 中的数据都是热点数据?...

面试的时候很容易被问到缓存的问题,比如数据库里有2000W数据,Redis中只存20W的数据,如何保证 Redis 中的数据都是热点数据?

当 Redis 中的数据集上升到一定大小的时候,就需要实施数据淘汰策略,以保证 Redis 的内存不会被撑爆;那么如何保证 Redis 中的数据都是热点数据,需要先看看 Redis 有哪些数据淘汰策略。

一、Redis 数据淘汰策略

1.volatile-lru

从已设置过期时间的数据集中,挑选最近最少使用的数据淘汰;

2.volatile-ttl

从已设置过期时间的数据集中,挑选将要过期的数据淘汰;

3.volatile-random

从已设置过期时间的数据集中,任意选择数据淘汰;

4.allkeys-lru

当内存不足以容纳新写入数据时,移除最近最少使用的key;

5.allkeys-random

从数据集中任意选择数据淘汰;

6.no-eviction

禁止淘汰数据,也就是说当内存不足时,新写入操作会报错。

到了4.0版本后,又增加以下两种淘汰策略:

7.volatile-lfu

从已设置过期时间的数据集中,挑选最不经常使用的数据淘汰(注意lfu和lru的区别);

8.allkeys-lfu

当内存不足以容纳新写入数据时,移除最不经常使用的key。

二、如何选择策略规则

针对题目中的问题,还需要考虑数据的分布情况:

如果数据呈现幂律分布,一部分数据访问频率高,一部分数据访问频率低,则可以使用allkeys-lru或allkeys-lfu;

如果数据呈现平等分布,所有的数据访问频率都相同,则使用allkeys-random。

更多资料和文章,请扫码关注...

b30e4b2a0c22

image

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值