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

如何在Python中使用RedisJSON模块从Redis获取含ID的指定记录

使用RedisJSON在Python中检索指定条件的完整记录

前提准备

  • 确保Redis服务器已安装RedisJSON模块(可通过redis-cli MODULE LIST命令检查)
  • 安装Python依赖包:
pip install redis redisjson

实现方案

方案1:全量获取后本地过滤(适合数据量较小场景)

直接拉取monitor键下的所有数据,在Python本地过滤符合release条件的条目,代码简洁直观:

from redis import Redis

# 连接Redis,根据实际环境修改配置
redis_client = Redis(host='localhost', port=6379, db=0, decode_responses=True)

# 获取monitor下的完整JSON数据
monitor_records = redis_client.json().get('monitor')

# 过滤出release为'23.4.6'的记录(包含ID)
target_records = {
    record_id: details 
    for record_id, details in monitor_records.items() 
    if details.get('release') == '23.4.6'
}

print(target_records)
# 输出:{'106521149': {'status': 'Screen', 'release': '23.4.6'}}

方案2:分步查询减少内存占用(适合数据量较大场景)

先获取所有ID,再逐个查询每个ID对应的release值,仅保留符合条件的完整记录,避免一次性加载大量数据:

from redis import Redis
from redis.commands.json.path import Path

redis_client = Redis(host='localhost', port=6379, db=0, decode_responses=True)

# 获取monitor下的所有ID键
all_ids = redis_client.json().get('monitor', Path('$keys'))

target_records = {}
for record_id in all_ids:
    # 查询当前ID的release值
    current_release = redis_client.json().get('monitor', Path(f'$.{record_id}.release'))
    if current_release == '23.4.6':
        # 获取该ID的完整记录
        full_record = redis_client.json().get('monitor', Path(f'$.{record_id}'))
        target_records[record_id] = full_record

print(target_records)
# 输出:{'106521149': {'status': 'Screen', 'release': '23.4.6'}}

说明

  • 方案1代码更简洁,适合数据量不大的场景;方案2通过多次小查询降低内存消耗,适合大规模数据场景。
  • decode_responses=True会自动将Redis返回的字节串转为字符串,避免手动解码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:17:03