当前位置: 首页 > news >正文

redis存入hash,key=>value和key=>(key=>value)使用Python举例

在 Redis 中,`HASH` 数据结构(也称为 `HMAP` 或 `Hash Map`)允许你存储键值对集合,其中每个键值对都是字段(field)和值(value)的映射。在 Python 中,你可以使用 `redis-py` 库来与 Redis 交互,并存储和检索 HASH 数据。

 

以下是使用 Python 和 `redis-py` 库来存储和检索 Redis HASH 的示例:

 

1. **安装 redis-py**(如果你还没有安装的话):

 

 

```bash

pip install redis

```

2. **Python 示例**:

 

 

```python

import redis

 

# 连接到 Redis 服务器(这里假设 Redis 服务器在本地运行,端口为 6379)

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

 

# 存入单个键值对到 HASH 中(使用 hset 方法)

# 这里假设我们有一个名为 "user:1" 的 HASH,我们要存入 "name" => "Alice" 和 "age" => 30

r.hset("user:1", "name", "Alice")

r.hset("user:1", "age", 30)

 

# 也可以一次性存入多个键值对

r.hmset("user:2", {"name": "Bob", "age": 25, "city": "New York"})

 

# 检索 HASH 中的值(使用 hget 方法)

name = r.hget("user:1", "name")

print(f"Name: {name.decode('utf-8')}") # 输出:Name: Alice

 

# 检索 HASH 中的所有字段和值(使用 hgetall 方法)

user_data = r.hgetall("user:1")

for field, value in user_data.items():

    print(f"{field.decode('utf-8')}: {value.decode('utf-8')}")

# 输出:

# name: Alice

# age: 30

 

# 对于 "key=>(key=>value)" 的情况,你可以将内部的键值对序列化为字符串,然后作为值存储

# 例如,使用 json 来序列化字典

import json

 

inner_dict = {"inner_key": "inner_value"}

inner_dict_json = json.dumps(inner_dict)

r.hset("user:3", "inner_hash", inner_dict_json)

 

# 检索并反序列化内部的 HASH

inner_hash_json = r.hget("user:3", "inner_hash")

inner_hash = json.loads(inner_hash_json)

print(inner_hash) # 输出:{'inner_key': 'inner_value'}

```

注意:在上面的示例中,我们从 Redis 获取的字符串是字节串(`bytes` 类型),因此我们需要使用 `.decode('utf-8')` 将其转换为字符串。同样,当我们将 Python 字典存储为 Redis HASH 的值时,我们使用了 `json.dumps()` 将其序列化为字符串,并使用 `json.loads()` 在检索时反序列化它。

http://www.lryc.cn/news/401247.html

相关文章:

  • Guava LocalCache源码分析:LocalCache的get、put、expand、refresh、remove、clear、cleanUp
  • linux-arm ubuntu18.04 qmqtt5.12.6 编译部署
  • 阿里ChatSDK使用,开箱即用聊天框
  • LangChain —— Message —— How to trim messages
  • 专升本-1.0.3(英语)-升本209天-星期二
  • 集合媒体管理、分类、搜索于一体的开源利器:Stash
  • 数仓工具—Hive语法之事务表更新Transactional Table Update
  • 系统架构师(每日一练2)
  • Django REST Framework(十)视图集-ViewSet
  • sping总览
  • 【Godot4.2】MLTag类:HTML、XML通用标签类
  • 美式键盘 QWERTY 布局的起源
  • 【JavaEE】HTTP(2)
  • LinuxShell编程2——shell搭建Discuzz论坛网站
  • .NET MAUI开源架构_1.学习资源分享
  • Unsloth 微调 Llama 3
  • 热修复的原理
  • 【对顶堆 优先队列】2102. 序列顺序查询
  • Go 语言中的互斥锁 Mutex
  • CSS 中的 ::before 和 ::after 伪元素
  • JuiceFS缓存特性
  • R语言实现SVM算法——分类与回归
  • React@16.x(57)Redux@4.x(6)- 实现 bindActionCreators
  • 【深度学习入门篇 ⑦】PyTorch池化层
  • 【Pytorch】数据集的加载和处理(一)
  • 论文翻译:Explainability for Large Language Models: A Survey
  • 38 IRF+链路聚合+ACL+NAT组网架构
  • 【昇思学习打卡营打卡-第二十八天】MindNLP ChatGLM-6B StreamChat
  • 前端打包部署后源码安全问题总结
  • 扩展你的App:Xcode中App Extensions的深度指南