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

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

本文介绍如何使用 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。