Redis Client 从入门到精通(一)下:redis-py 核心数据结构操作与连接管理

在上篇内容中,我们完成了 Redis Client API 的概念讲解、redis-py 客户端的环境搭建,以及基础连接的创建与参数解析。本篇我们继续上手实操,详细讲解 redis-py 中最常用的两类数据结构 ------ 字符串(String)与哈希(Hash)的代码操作,以及连接关闭与资源释放的规范用法。

三、redis-py 基础数据操作

基于上篇创建的客户端连接对象,我们可以直接调用封装好的方法,完成各类数据结构的读写操作,所有方法均与 Redis 原生命令一一对应,学习成本极低。

3.2 操作字符串(String)数据

字符串是 Redis 最基础、最常用的数据结构。在 redis-py 中,通过set()get()方法即可完成最基础的键值对存储与读取,完全对应 Redis 原生的SETGET命令。

复制代码
# 存储一个字符串键值对
r.set('company', 'WPS Office')

# 读取指定键的字符串值
company_name = r.get('company')
print(company_name)  # 输出: WPS Office

代码说明

  • r.set(key, value):向 Redis 中写入字符串类型的键值对,支持后续追加过期时间、NX/XX 模式等扩展参数
  • r.get(key):根据键名读取对应的值;若开启了decode_responses=True,将直接返回 Python 字符串,无需手动解码

3.3 操作哈希(Hash)数据

Redis 的 Hash 结构非常适合存储结构化对象,比如用户信息、会话状态、配置项等。在 redis-py 中,我们主要通过hset()完成批量写入,通过hgetall()完成全量读取。

复制代码
# 批量写入哈希字段,mapping参数传入Python字典
result = r.hset('user-session:123', mapping={'name': 'Alice', 'age': 29, 'role': 'Developer'})
print(result)  # 输出: True (代表写入成功)

# 读取整个哈希键的所有字段,返回Python字典
user_data = r.hgetall('user-session:123')
print(user_data)  # 输出: {'name': 'Alice', 'age': '29', 'role': 'Developer'}
操作解析
  • hset() :对应 Redis 原生HSET命令,用于向哈希表中写入字段。通过mapping参数可一次性传入 Python 字典,批量写入多个字段,无需逐字段调用,代码更简洁、性能更优。
  • hgetall() :对应 Redis 原生HGETALL命令,读取指定哈希键下的全部字段与值,直接以 Python 字典格式返回,无需手动解析。
⚠️ 数据类型注意事项

这是新手极易踩坑的一个细节:Redis 内部所有值均以字符串形式存储 。 即使我们在 Python 中传入的age是整数 29,存入 Redis 后也会被转为字符串格式。因此通过hgetall()读取回来后,age对应的值是字符串'29',而非整数类型。业务代码中如果需要数值计算,务必手动做类型转换。

3.4 关闭连接与资源释放

当应用程序运行结束,或确定不再需要当前 Redis 连接时,应当主动关闭连接,释放网络套接字等系统资源,避免长期运行下出现资源泄漏。

复制代码
# 关闭当前客户端连接
r.close()
作用说明

close()方法会主动断开当前客户端与 Redis 服务端的 TCP 网络连接,确保系统资源被及时回收,在长连接管理的生产环境中尤为重要。

补充说明:如果项目使用了连接池(Connection Pool)管理连接,调用close()并不会直接销毁物理连接,而是将连接归还到连接池中,供后续请求复用。

小结

本篇我们完成了 redis-py 中字符串、哈希两类核心数据结构的实操讲解,以及连接关闭的规范用法。到这里,redis-py 的基础安装、连接建立、基础数据操作就全部讲解完毕,大家可以在本地环境动手尝试,快速上手基础操作。

在后续的系列内容中,我们会继续深入 redis-py 的进阶特性,包括连接池管理、管道(Pipeline)、事务、发布订阅等高级功能,以及量化交易场景下的实战封装,欢迎持续关注。


本文为「Redis Client 从入门到精通」系列第一篇下篇,系列内容持续更新中,欢迎点赞、收藏、订阅专栏。

相关推荐
川石课堂软件测试1 小时前
自动化测试常见的异常处理
python·jmeter·mysql·docker·容器·单元测试·grafana
荣码1 小时前
Function Calling:比Agent更靠谱的工具调用,我踩了4个坑
java·python
疯狂打码的少年1 小时前
【数据结构】复习日:树 + 图 + 排序(整理对比表)
数据结构·笔记·算法
这就是佬们吗1 小时前
AI 的记忆进化史:从金鱼记忆到学会做梦
人工智能·python·embedding
星星.7221 小时前
2026河南萌新联赛第六场(郑州大学)补题B、D、L、J、I
数据结构·c++·算法
Csvn1 小时前
🐍 Day 6: Python 异常处理 — 防御式编程的核心
后端·python
朝发如雪1 小时前
快速掌握Linux(2)(时间相关函数)(文件IO)
linux·python·算法
苏子寒1 小时前
Nano-VLLM全代码解析笔记(2)-block_manager
人工智能·笔记·python·机器学习·nlp·vllm
心仪久了会沦陷1 小时前
数据结构入门系列——顺序表详解:概念、分类与动态实现
c语言·数据结构·经验分享·笔记·开源