一架梯子,一头程序猿,仰望星空!
Redis面试题 > 内容正文

Redis的数据淘汰策略有哪些?如何配置?


问题简答

Redis 支持多种数据淘汰策略,包括 LRU、LFU 和随机等。可以通过配置文件或命令行参数设置淘汰策略,以适应不同的业务需求。

问题详解:

1.Redis支持的淘汰策略

  1. noeviction:不进行数据淘汰,当内存使用达到最大值时,对写操作返回错误, 这个是默认策略。
  2. allkeys-lru:对所有键值对使用 LRU(最近最少使用)策略进行淘汰。
  3. allkeys-lfu:对所有键值对使用 LFU(最不经常使用)策略进行淘汰。
  4. allkeys-random:随机淘汰所有键值对。
  5. volatile-lru:对设置了过期时间的键值对使用 LRU 策略进行淘汰。
  6. volatile-lfu:对设置了过期时间的键值对使用 LFU 策略进行淘汰。
  7. 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 算法需要记录每个数据被访问的次数,会占用一定的内存空间,因此不适用于数据量较大的场景。