1.Redis支持的淘汰策略
- noeviction:不进行数据淘汰,当内存使用达到最大值时,对写操作返回错误, 这个是默认策略。
- allkeys-lru:对所有键值对使用 LRU(最近最少使用)策略进行淘汰。
- allkeys-lfu:对所有键值对使用 LFU(最不经常使用)策略进行淘汰。
- allkeys-random:随机淘汰所有键值对。
- volatile-lru:对设置了过期时间的键值对使用 LRU 策略进行淘汰。
- volatile-lfu:对设置了过期时间的键值对使用 LFU 策略进行淘汰。
- volatile-random:随机淘汰设置了过期时间的键值对。
2.配置淘汰策略
2.1. 修改配置文件
# redis最大内存限制
maxmemory 1GB
# 淘汰策略设置
maxmemory-policy allkeys-lru
2.2.命令行设置
设置最大内存
CONFIG SET maxmemory 1GB
设置淘汰策略
CONFIG SET maxmemory-policy volatile-lru
3.LRU和LFU的区别
LRU 算法按照最近使用时间来淘汰数据,即淘汰最长时间未被使用的数据,而 LFU 算法则按照使用频率来淘汰数据,即淘汰使用次数最少的数据。
LRU 算法适用于那些“最近使用过的数据很可能会再次使用”的场景,比如缓存数据;而 LFU 算法适用于那些“使用频率较高的数据很可能是热点数据”的场景,比如热门搜索关键词。同时,LFU 算法需要记录每个数据被访问的次数,会占用一定的内存空间,因此不适用于数据量较大的场景。