Python Redis模块无法设置Unix时间戳过期时间:是bug还是版本不兼容?
环境平台
- Windows 11 Pro x64 简体中文(zh_CN)
- Python版本:3.9.12 MSC v.1916 64 bit (AMD64)
- Redis版本:5.0.14.1 x64
- Python Redis模块版本:4.5.1
问题
无法使用Python Redis模块设置Unix时间戳格式的过期时间
疑问
这是Python Redis模块的bug,还是Redis服务器与该模块版本不兼容?
尝试的方法及代码
(注:变量key为随机字符串)
首先是Redis连接代码:
redis_pool_session = redis.ConnectionPool(host=app_config.APP_REDIS_SERVER_HOST, port=app_config.APP_REDIS_SERVER_PORT, db=app_config.APP_REDIS_DB_SESSION_NO, password=app_config.APP_REDIS_SERVER_PASSWORD, decode_responses=True) conn = redis.Redis(connection_pool=redis_pool_session)
方法1
直接通过set方法的exat参数设置过期时间:
conn.set("JIE_DEMO_" + key, value, exat=1677298679)
方法2
先设置键值,再调用expireat方法:
conn.set("JIE_DEMO_" + key, value) conn.expireat("JIE_DEMO_" + key, 1677298679)
Redis命令行(Redis-CLI)操作
EXPIREAT "JIE_DEMO_<key>" 1677298679
(注:将<key>替换为实际随机字符串)
错误现象
方法1报错:
redis.exceptions.ResponseError: syntax error
方法2:
程序返回码为0,但实际完全不生效。在Redis-CLI中查询该键的过期时间,TTL仍为-1(永久有效)
Redis-CLI执行对应操作可正常生效。
内容的提问来源于stack exchange,提问作者Daniel JIE
相关产品推荐
相关产品推荐

