方法原理
使用 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)。
转载请注明转自www.hylab.cn,原文地址:Redis过期时间改为永久的方法和Python脚本实现