Redis过期时间改为永久的方法和Python脚本实现

创建日期:2025-05-11
更新日期:2025-05-11

方法原理

使用 PERSIST 命令移除键的过期时间。需遍历所有键并批量操作,具体步骤如下。

具体步骤

1、使用 SCAN 命令遍历所有键。

Redis 的 SCAN 命令可安全遍历大量键,避免阻塞服务:

# 初始游标为 0,循环直到返回游标 0
SCAN 0

2、对每个键执行 PERSIST。

对遍历到的每个键,用 PERSIST 移除过期时间:

PERSIST key_name

3、编写脚本自动化处理。

以 Python 为例(需安装 redis-py 库):

import redis

r = redis.Redis(host='localhost', port=6379, db=0)
cursor = 0
while True:
    cursor, keys = r.scan(cursor)
    for key in keys:
        r.persist(key)
    if cursor == 0:
        break

注意事项

  • 性能影响:数据量较大时,遍历可能增加负载,建议在低峰期操作。
  • 已过期的键:若键已过期但未被 Redis 删除(惰性删除机制),PERSIST 会使其恢复为永久键。
  • 监控进度:可添加计数器或日志跟踪处理进度。
  • 备份数据:操作前建议备份数据(SAVE 或 BGSAVE)。