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 原生的SET与GET命令。

复制代码
# 存储一个字符串键值对
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 从入门到精通」系列第一篇下篇,系列内容持续更新中,欢迎点赞、收藏、订阅专栏。

相关推荐
CQU_JIAKE16 小时前
10.25【A】
数据结构·算法
2601_9628857216 小时前
baostock vs Tushare:哪个免费股票数据 API 更好用?
python
hahaha601616 小时前
数字图像锐化
开发语言·python
xiangjiaodalishi16 小时前
主流 AI 爬虫 User-Agent 清单大全:分组、配置与持续维护(2026 版)
人工智能·爬虫·python
普贤莲花16 小时前
先学Workbuddy还是“人工智能训练师”,或者python基础课?
开发语言·人工智能·python
砚底藏山河16 小时前
python量化实操:回测数据缓存与重放
java·python·金融·1024程序员节
爱好曙光17 小时前
Redis Cluster 槽迁移:MOVED 重定向与拓扑刷新实战
redis·cluster·性能调优·moved·槽迁移
第404号工位17 小时前
浏览器的“无痕模式”是当代最大安慰剂?我用 30 行 JS 提取硬件指纹,跨网络换代理照样精准锁定你
linux·人工智能·python
凌界天行17 小时前
知名的无人机侦测肩灯制造厂名声
python
XZ-07000117 小时前
week10-直方图
python