美文网首页
数据库里有2000W数据,Redis中只存20W的数据,如何保证

数据库里有2000W数据,Redis中只存20W的数据,如何保证

作者: 会点代码的大叔 | 来源:发表于2019-11-14 15:05 被阅读0次

    面试的时候很容易被问到缓存的问题,比如数据库里有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。

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

    image

    相关文章

      网友评论

          本文标题:数据库里有2000W数据,Redis中只存20W的数据,如何保证

          本文链接:https://www.haomeiwen.com/subject/snerictx.html