reids补充7之Redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?)

Redis 配置文件 Redis.conf 中有相关注释,我这里就不贴了,大家可以自行查阅或者通过这个网址查看: http://download.Redis.io/Redis-stable/Redis.conf或者查看我的博客Redis 配置  

Redis 提供 6 种数据淘汰策略:

volatile-lru(least recently used)已设置过期时间的数据集(server.db[i].expires)里选择最近最少使用的的数据进行淘汰

volatile-tll(time to live)已设置过期时间的数据集(server.db[i].expires)里选择最接近过期时间的数据进行淘汰

volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

allkeys-lru:当内存不足时,在键空间中,选择最近最少使用的key进行移除(这个是最常用的)

allkeys-random:随机移除key

no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错。这个应该没人使用吧!

4.0 版本后增加以下两种:

volatile-lfu(least frequency used):从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰

allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的 key

备注: 关于 Redis 设置过期时间以及内存淘汰机制,我这里只是简单的总结一下,后面会专门写一篇文章来总结!

参考文档:

https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/Redis/redis-all.md#redis-%E5%86%85%E5%AD%98%E6%B7%98%E6%B1%B0%E6%9C%BA%E5%88%B6mysql-%E9%87%8C%E6%9C%89-2000w-%E6%95%B0%E6%8D%AEredis-%E4%B8%AD%E5%8F%AA%E5%AD%98-20w-%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81-redis-%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E9%83%BD%E6%98%AF%E7%83%AD%E7%82%B9%E6%95%B0%E6%8D%AE

https://raw.githubusercontent.com/antirez/redis/2.8/redis.conf

https://ifeve.com/redis-lru/

原文地址:https://www.cnblogs.com/chengmr/p/13359287.html