Python Redis 批量设置 Key 过期时间的方法

Alice
Alice
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍如何使用 Python 批量为未设置过期时间的 Redis Key 添加 24 小时过期策略。通过 scan_iter 分批获取 Key,利用 ttl 命令判断是否已过期,并对未设置过期的 Key 执行 expire 命令。该方法有助于解决因 Key 未过期导致的内存暴增问题,适用于测试环境或谨慎操作的线上场景。

本文详细解析了利用 Python 在 Redis 中批量设置 Key 过期时间的具体过程,提供了详细的示例代码,对学习和工作具有参考价值。

Redis 批量操作背景与场景

在使用 Redis 或 Codis 时,批量操作是常见需求。我们可以通过连接数据库,对多个 Key 进行批量处理。

关于未设置过期时间的 Key,通常存在以下情况:

1. 大量 Key 未设置过期时间,导致 Redis 内存持续增加。

2. 研发人员(RD)需求扫描出这些 Key,由研发自行处理过期时间(通常数据库管理员 DBA 不直接介入数据修改)。

3. DBA 进行批量设置过期时间(测试环境可直接批量设置,线上环境需谨慎操作)。

Python 批量设置过期时间实现

下面通过一段代码,实现为未设置过期时间的 Key 批量设置 24 小时(86400 秒)过期的功能。


from redis import Redis
def setExpiredKeys():
  try:
    if redis_pass == 'none':
      redisclient = Redis(host=redis_host, port=redis_port,db=0)
    else:
      redisclient = Redis(host=redis_host, port=redis_port, password=redis_pass)
    for key in redisclient.scan_iter(count=500):
      keyttl = redisclient.execute_command('ttl', key)
      if keyttl == -1: # 此处扫到key,可以进行导出处理或者执行命令
        redisclient.expire(key, 86400)
  except Exception as e:
    raise e
if __name__ == '__main__':
  redis_host = '192.168.0.1'
  redis_port = 6379
  redis_pass = '123456'
  setExpiredKeys()

代码功能说明:

导入 Redis 模块中的 Redis 类,建立 Redis 客户端连接。使用 scan_iter 每次获取 500 个 Key;对每个 Key 执行 ttl 命令,根据返回值判断是否已设置过期时间。若未设置(返回值为 -1),则通过 expire 命令批量设置过期时间为 86400 秒。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表