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