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

news/2024/8/26 12:46:55 标签: python, redis

在 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.niftyadmin.cn/n/5558011.html

相关文章

Qcom平台通过Hexagon IDE 测试程序性能指导

Qcom平台通过Hexagon IDE 测试程序性能指导 1 安装Hexagon IDE工具2 测试工程2.1 打开Hexagon IDE2.2 新建工程2.3 添加测试案例2.3.1 方法一:新建2.3.2 方法二:拷贝 2.4 配置测试环境2.4.1 包含头文件2.4.2 添加程序优化功能(需先bulid一下)2.4.3 添加g…

【Qt+opencv】ROI与图像混合

文章目录 前言ROIROI是什么如何提取ROI 图像混合整体混合线性混合 局部混合 总结 前言 在计算机视觉和图像处理中,我们经常需要对图像的某一部分(也就是ROI,Region of Interest)进行操作。这些操作可能包括滤波、缩放、旋转等。同…

NSSCTF中24网安培训day2中web题目【下】

[NISACTF 2022]easyssrf 这道题目考察的是php伪协议的知识点 首先利用file协议进行flag查找 file:///flag.php 接着我们用file协议继续查找fl4g file:///fl4g 接着我们访问此文件,得到php代码如下 这里存在着stristr的函数&#x…

K8S组件calico重建过程

问题背景:周一来了以后看到calico-node组件pod重启100多次,查看日志发现warning日志: Number of node(s) with BGP peering established 2 calico/node is not ready: felix is not ready: Get “http://localhost:9099/readiness”: dial t…

提高自动化测试脚本编写效率 5大关键注意事项

提高自动化测试脚本编写效率能加速测试周期,减少人工错误,提升软件质量,促进项目按时交付,增强团队生产力和项目成功率。而自动化测试脚本编写效率低下,往往会导致测试周期延长,增加项目成本,延…

[k8s源码]4.informer

Informer 是 client-go 库中的一个核心组件,它提供了一种高效的方式来监视 Kubernetes 集群中资源的变化。Informer 通过 Watch 机制与 API Server 建立长连接,初次同步时会获取资源的完整列表,之后只接收增量更新,大大减少了网络流量。 使用informer可…

如何在VSCode中配置Python环境

在Visual Studio Code(VSCode)中配置Python环境,主要包括安装VSCode、安装Python解释器、安装Python插件以及配置Python解释器等步骤。以下是详细的配置指南: 一、安装VSCode 下载VSCode: 访问VSCode官网。根据自己的…

计算机视觉和自然语言处理:OCR 模型

OCR 模型 文字识别(Optical Character Recognition,OCR)模型是一种用来从图像中提取文本的技术。OCR模型在计算机视觉和自然语言处理中的应用非常广泛,例如将扫描的文档转换为可编辑的文本文件,自动读取车牌号码&…