如何保证Redis中存的都是热点数据?

具体的可以看之前的这篇博客,考的就是Redis的逐出算法。

达到最大内存后的,对被挑选出来的数据进行删除的策略
影响数据逐出的相关配置
检测易失数据(可能会过期的数据集server.db[i].expires )
① volatile-lru:挑选最近最少使用的数据淘汰
② volatile-lfu:挑选最近使用次数最少的数据淘汰
③ volatile-ttl:挑选将要过期的数据淘汰
④ volatile-random:任意选择数据淘汰
检测全库数据(所有数据集server.db[i].dict )
⑤ allkeys-lru:挑选最近最少使用的数据淘汰
⑥ allkeys-lfu:挑选最近使用次数最少的数据淘汰
⑦ allkeys-random:任意选择数据淘汰
放弃数据驱逐
⑧ no-enviction(驱逐):禁止驱逐数据( redis4.0中默认策略),会引发错误OOM( Out Of Memory)

场景:

数据库中有1000w的数据,而redis中只有50w数据,如何保证redis中数据都是热点数据?

方案:

限定 Redis 占用的内存,Redis 会根据自身数据淘汰策略,留下热数据到内存。所以,计算一下 50W 数据大约占用的内存,然后设置一下 Redis 内存限制即可,并将淘汰策略为volatile-lru或者allkeys-lru。

设置Redis最大占用内存:

打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型

posted @ 2020-12-14 22:58  天宇轩-王  阅读(313)  评论(0编辑  收藏  举报