在上篇内容中,我们完成了 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 从入门到精通」系列第一篇下篇,系列内容持续更新中,欢迎点赞、收藏、订阅专栏。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐