news 2026/9/15 17:52:50

如何安装 redis-py 并首次连接 Redis 完成一次 set/get 数据读写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何安装 redis-py 并首次连接 Redis 完成一次 set/get 数据读写

如何安装 redis-py 并首次连接 Redis 完成一次 set/get 数据读写

【免费下载链接】redis-pyRedis Python client项目地址: https://gitcode.com/GitHub_Trending/re/redis-py

本文解决的问题是:你准备在一台机器上用 Python 操作 Redis,需要完成三件事——把 redis-py 装进 Python 环境、建立到 Redis 服务器的首次连接、并跑通一次set/get数据读写。前提是你已经能启动一个 Redis 服务器(本文给出仓库 README 推荐的 docker 启动方式),并装有 pip 可用的 Python 环境。

准备条件:Python 版本与 Redis 服务器

先看 Python 版本要求,这里仓库内的两处文档说法不完全一致,按适用条件区分:

  • 当前仓库代码(pyproject.toml)声明requires-python = ">=3.10",且 classifiers 列出 Python 3.10–3.14、CPython 与 PyPy;
  • docs/index.rst 中写着 "Python 3.7+",这是较旧的表述。README 同时说明:redis-py 5.0 是最后一个支持 Python 3.7 的版本,5.1 起要求 3.8+,6.2.0 起要求 3.9+。

因此如果你安装的是最新 redis-py,以>=3.10为准;如果你被旧项目锁定在某个旧版 redis-py,按 README 的版本说明回退判断。

Redis 服务器方面,README 给出两条 docker 启动命令,按你要用的 Redis 版本二选一:

# Redis 版本 >= 8.0 docker run -p 6379:6379 -it redis:latest
# Redis 版本 < 8.0 docker run -p 6379:6379 -it redis/redis-stack:latest

两条命令都把容器 6379 端口映射到本机 6379,后续示例的连接地址都基于这个端口。库与 Redis 服务器的兼容范围见 README 的 "Supported Redis Versions":最近的库版本支持 Redis 7.2、7.4、8.0、8.2、8.4、8.6、8.8,并有版本对照表(如>= 6.0.0对应 Redis 7.2 及以上)。如果你的 Redis 服务器版本不在此范围,先确认服务器版本再决定是否更换客户端库版本。

安装 redis-py

最简安装命令来自 README:

pip install redis

可选分支:如果追求更快的响应解析性能,README 建议安装带 hiredis 的编译型解析器,多数情况下无需改动代码,且当环境中存在 hiredis >= 1.0 时 redis-py 会默认尝试使用它:

pip install "redis[hiredis]"

这一步只影响解析性能,不影响后文的连接与读写流程,按需选择即可。

首次连接 Redis 并用 ping 验证

连接成功与否有一个直接的验证方式:调用r.ping()。docs/index.rst 给出三种快速连接写法,分别对应本地默认地址、指定 host/port、URL 字符串三种情形:

import redis # Redis 运行在 localhost:6379(默认值) r = redis.Redis() r.ping()
import redis # Redis 运行在 foo.bar.com:12345 r = redis.Redis(host='foo.bar.com', port=12345) r.ping()
import redis # 用 URL 形式指定 r = redis.from_url('redis://foo.bar.com:12345') r.ping()

foo.bar.com12345是文档示例中的占位地址,替换为你自己的 Redis 服务器地址和端口;如果服务器就在本机 6379 端口,直接用第一段代码即可。docs/examples/connection_examples.ipynb 中本地默认连接redis.Redis()ping()返回值为True(文档示例输出),你可以以同样方式判断连接是否建立。

如果连接的是需要认证的服务器,同样的构造函数接受username/password参数,例如 connection_examples.ipynb 中的redis.Redis(host='localhost', port=6380, username='dvora', password='redis', decode_responses=True);无认证需求时不必关心。

完成一次 set/get 数据读写

连接可用后,用set写入、get读回,验证数据确实落到了 Redis 里。README 的 Basic Example:

import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('foo', 'bar') # 返回 True r.get('foo') # 返回 b'bar'

这里有两个必须理解的点:

  1. set成功返回Trueget返回写入的值。上面Trueb'bar'是 README 文档示例中展示的输出形态,不是额外校验公式,实际运行以你的值为准;
  2. 默认情况下 Python 侧收到的响应是 bytesb'bar'而不是'bar')。要得到解码后的字符串,在构造客户端时设置decode_responses=True

docs/examples/set_and_get_examples.ipynb 演示了带decode_responses=True的完整读写流程(其中输出均为文档示例):

import redis r = redis.Redis(decode_responses=True) r.ping() # True r.set("full_name", "john doe") # True r.exists("full_name") # 1 r.get("full_name") # 'john doe'

该 notebook 还展示了同 key 覆盖写入(再次set("full_name", "overridee!")get返回'overridee!'),以及用setex("important_key", 100, "important_value")带过期时间写入、ttl("important_key")查询剩余秒数(文档示例返回100)。如果你只验证一次最小读写,set+get两段已经足够;setex/ttl是同一 notebook 中的可选延伸。

结果验证与已知边界

验证清单,全部来自上述文档展示的输出:

  • r.ping()返回True—— 连接建立;
  • r.set(...)返回True—— 写入成功;
  • r.get(...)返回写入的值 —— 默认是 bytes(如b'bar'),设置decode_responses=True后是字符串(如'john doe');
  • r.exists("full_name")返回1—— key 存在。

几个首次使用时容易踩到的边界:

  • 连接池是默认行为:每个redis.Redis实例自带自己的连接池;如果想共享池,用redis.ConnectionPool(host='localhost', port=6379, db=0)redis.Redis(connection_pool=pool)(README Connection Pools 一节);
  • 协议版本:从 redis-py 8.0 起,客户端在链路上默认使用 RESP3,但保留兼容旧的 RESP2 Python 响应形态;如需显式指定,protocol=3protocol=2(docs/examples/connection_examples.ipynb)。新项目 README 建议设置legacy_responses=False以获得与协议无关的统一响应形态;
  • 异步、集群、Sentinel 是另一组客户端redis.asyncioRedisClusterSentinel,见 docs/connections.rst),本文的单节点redis.Redis路径不适用于它们,不要混用。

下一步

跑通本次读写后,完整的命令函数集合在 docs/commands.rst 对应的文档中,连接参数(超时、SSL 等)与更多连接示例可继续参考 docs/examples/connection_examples.ipynb 与 docs/connections.rst。

【免费下载链接】redis-pyRedis Python client项目地址: https://gitcode.com/GitHub_Trending/re/redis-py

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 17:50:09

不会代码做网页?2026网页的制作与建设选型指南

不会代码做网页?2026网页的制作与建设选型指南 想做个网站展示产品,但一搜“网页的制作与建设”就头大? 满屏全是HTML、CSS、JavaScript,或者让你买服务器、备案、写代码。 自己不会代码想做网站,到底该怎么破局?…

作者头像 李华
网站建设 2026/9/15 17:49:40

AI token降本实战:从历史流量降价看可落地的7大优化路径

1. 从“流量贵”到“AI烧钱”&#xff1a;一个被反复验证的产业规律“AI烧token不用慌&#xff1f;流量当年也是这么便宜下来的”——这句话刚看到时&#xff0c;我正盯着后台实时跳动的API调用计费面板发呆。一小时过去&#xff0c;账单数字涨了83块&#xff0c;而产出的27条文…

作者头像 李华
网站建设 2026/9/15 17:48:22

YOLOv12在PCB缺陷检测中的优化与应用实践

1. 项目概述&#xff1a;工业质检领域的智能化突破在电子制造业中&#xff0c;PCB电路板的质量检测一直是生产线上最关键的环节之一。传统的人工目检方式不仅效率低下&#xff08;每小时仅能检测20-30块板卡&#xff09;&#xff0c;而且漏检率高达15%-20%。我们团队基于最新发…

作者头像 李华
网站建设 2026/9/15 17:48:13

Bootstrap农业电商前端实战:从素材zip到响应式商城

简介&#xff1a;一份基于HTML、CSS与Bootstrap构建的农业电商前端页面素材包&#xff0c;面向具备HTML和CSS基础、希望快速搭建农产品交易类网站的前端初学者&#xff0c;也可直接作为课程设计或毕业设计的界面模板使用。素材围绕Chashi品牌农业商城展开&#xff0c;覆盖首页、…

作者头像 李华