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

如何使用redis.Redis方法存储嵌套结构的Python字典?

如何将嵌套Python字典存入Redis

当然可以把这种嵌套字典存入Redis啦!不过Redis本身只支持字符串、哈希、列表等基础数据结构,没法直接存储Python的嵌套字典对象,所以我们需要先把它序列化成Redis能识别的格式,最常用的两种方式是JSON和pickle,下面给你具体的实现步骤:

方法一:使用JSON序列化(推荐,跨语言兼容)

JSON是通用的数据交换格式,序列化后的字符串可读性强,而且其他编程语言也能轻松解析,适合需要跨语言访问Redis数据的场景。

实现代码

import json
import redis

# 你的嵌套字典
expected_value = {
    'status': 'paid',
    'quantity': 1,
    'faturas': {
        'B68D736C0DF84C459DED3CD84F18E388': {
            'fatura_due_date': '2020-11-11',
            'customer_id': '0A9CA75877564E0894DAD774E0CB09DA'
        }
    }
}

# 连接Redis(根据你的实际配置调整参数,比如host、port、password等)
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=False)

# 1. 将字典序列化为JSON字符串
serialized_data = json.dumps(expected_value)

# 2. 存入Redis,指定一个键名(比如'order:123:details',根据你的业务命名)
r.set('order:expected_value', serialized_data)

# 3. 从Redis取出并反序列化为字典
retrieved_data = r.get('order:expected_value')
if retrieved_data:
    parsed_dict = json.loads(retrieved_data)
    print(parsed_dict)
    # 可以正常访问嵌套结构
    print(parsed_dict['faturas']['B68D736C0DF84C459DED3CD84F18E388']['customer_id'])

方法二:使用Pickle序列化(仅Python环境适用)

Pickle是Python专属的序列化工具,能直接序列化几乎所有Python对象,但序列化后的结果是二进制数据,其他语言无法解析,适合只在Python生态中使用Redis的场景。

实现代码

import pickle
import redis

# 你的嵌套字典
expected_value = {
    'status': 'paid',
    'quantity': 1,
    'faturas': {
        'B68D736C0DF84C459DED3CD84F18E388': {
            'fatura_due_date': '2020-11-11',
            'customer_id': '0A9CA75877564E0894DAD774E0CB09DA'
        }
    }
}

# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 1. 将字典序列化为二进制数据
serialized_data = pickle.dumps(expected_value)

# 2. 存入Redis
r.set('order:expected_value_pickle', serialized_data)

# 3. 取出并反序列化
retrieved_data = r.get('order:expected_value_pickle')
if retrieved_data:
    parsed_dict = pickle.loads(retrieved_data)
    print(parsed_dict)

注意事项

  • 如果你的字典里包含JSON无法序列化的Python专属对象(比如datetime、自定义类实例),那Pickle会更合适,但要注意Pickle的安全性,不要反序列化不可信的数据。
  • 如果你只想把字典的顶层键值对存入Redis哈希结构,那可以用r.hset(),但嵌套的子字典还是需要先序列化,否则Redis哈希的value只能是字符串/数字类型,没法直接存储嵌套结构,所以这种情况下不如直接整个序列化存字符串更简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:37:46