温馨提示×

Redis如何配置过期策略

小樊
41
2025-08-18 15:33:30
栏目: 云计算

Redis的过期策略主要有两种:主动删除和被动删除。

  1. 主动删除

    • Redis会周期性地随机检查一些设置了过期时间的key,并删除其中已经过期的key。这个过程是由Redis的后台线程来完成的,不会影响到Redis的正常读写操作。
    • 可以通过配置active-expire-effort-per-second参数来控制主动删除的频率。这个参数表示每秒主动删除的key的数量。默认值是100。
  2. 被动删除

    • 当客户端尝试访问一个已经过期的key时,Redis会立即删除这个key并返回空值。这种方式可以确保过期的key不会占用内存空间。
    • 可以通过配置maxmemory-policy参数来设置被动删除的策略。当内存达到最大值时,Redis会根据这个策略来删除一些key。可选的策略包括:
      • noeviction:默认策略,当内存不足以容纳新写入数据时,新写入操作会报错。一般用在内存不能为后续写入操作扩容的场景。
      • allkeys-lru:从所有key中使用LRU(最近最少使用)算法进行淘汰。
      • volatile-lru:从已设置过期时间的key中使用LRU算法进行淘汰。
      • allkeys-random:从所有key中随机淘汰数据。
      • volatile-random:从已设置过期时间的key中随机淘汰数据。
      • volatile-ttl:从已设置过期时间的key中淘汰剩余生存时间(TTL)最短的key。

配置示例:

# 设置主动删除的频率 active-expire-effort-per-second 50  # 设置内存达到最大值时的删除策略 maxmemory-policy volatile-lru 

注意,这些配置需要在Redis启动前或者运行时通过CONFIG SET命令来设置。例如:

CONFIG SET active-expire-effort-per-second 50 CONFIG SET maxmemory-policy volatile-lru 

另外,如果你想要为特定的key设置过期时间,可以使用EXPIRE命令或者SETEX命令。例如:

EXPIRE key 60 # 设置key在60秒后过期 SETEX key 60 value # 设置key在60秒后过期,并设置key的值为value 

以上就是Redis的过期策略配置方法。

0