You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从Redis中读取哈希键及对应TIMESTAMP字段值

Python批量获取Redis哈希键TIMESTAMP字段方案

注意事项

r.keys() 命令会遍历全库所有键,执行期间会阻塞Redis主线程,键量较大时会严重影响实例性能,仅建议测试环境、小数据集场景使用。生产环境请使用下文的SCAN迭代方案。


基础实现(直接遍历键列表)

适合小数据集测试场景:

# r为已完成初始化的Redis连接实例
intkeylist = r.keys()
result = []

for key in intkeylist:
    # 过滤非哈希类型的键,避免调用hget报错
    if r.type(key) == b"hash":
        ts_value = r.hget(key, "TIMESTAMP")
        # 字节转字符串(redis-py默认返回字节类型,若已配置decode_responses=True可跳过decode步骤)
        key_str = key.decode("utf-8")
        ts_value_str = ts_value.decode("utf-8") if ts_value else "无TIMESTAMP字段"
        # 存入结果变量
        result.append((key_str, "TIMESTAMP", ts_value_str))
        # 按要求格式输出到屏幕
        print(f"{key_str} TIMESTAMP {ts_value_str}")

优化实现(Pipeline批量请求)

使用Redis Pipeline批量提交请求,减少网络往返开销,键量中等时性能提升明显:

intkeylist = r.keys()
pipe = r.pipeline(transaction=False)

for key in intkeylist:
    pipe.hget(key, "TIMESTAMP")
# 批量执行所有查询请求
ts_values = pipe.execute()

result = []
for key, ts_value in zip(intkeylist, ts_values):
    if r.type(key) == b"hash":
        key_str = key.decode("utf-8")
        ts_value_str = ts_value.decode("utf-8") if ts_value else "无TIMESTAMP字段"
        result.append((key_str, "TIMESTAMP", ts_value_str))
        print(f"{key_str} TIMESTAMP {ts_value_str}")

生产环境实现(SCAN迭代遍历)

使用SCAN命令增量迭代键,不会阻塞Redis实例,适合大库生产场景:

result = []
cursor = 0
# 每次迭代扫描的键数量,可根据实际业务调整
scan_count = 1000

while True:
    cursor, keys = r.scan(cursor, count=scan_count)
    for key in keys:
        if r.type(key) == b"hash":
            ts_value = r.hget(key, "TIMESTAMP")
            key_str = key.decode("utf-8")
            ts_value_str = ts_value.decode("utf-8") if ts_value else "无TIMESTAMP字段"
            result.append((key_str, "TIMESTAMP", ts_value_str))
            print(f"{key_str} TIMESTAMP {ts_value_str}")
    # 游标归0代表全库遍历完成
    if cursor == 0:
        break

内容的提问来源于stack exchange,提问作者dancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:48:02