Skip to content

hellowac/redis-py-zh-cn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

redis-py

Redis 键值存储的 Python 接口。

CI 文档 MIT 许可 pypi 预发布版本 codecov

安装 | 使用 | 高级主题 | 贡献


注意: redis-py 5.0 将是最后一个支持 Python 3.7 的版本,因为该版本已到达生命周期终点。redis-py 5.1 将支持 Python 3.8+。


如何使用 Redis?

在 Redis 大学免费学习

试用 Redis 云

深入开发者教程

加入 Redis 社区

在 Redis 工作

安装

通过 docker 启动 Redis:

docker run -p 6379:6379 -it redis/redis-stack:latest

要安装 redis-py,只需执行以下命令:

$ pip install redis

为了获得更高的性能,您可以安装支持 hiredis 的 redis-py,它提供了一个编译的响应解析器,对于大多数情况,无需更改代码。默认情况下,如果 hiredis 版本 >= 1.0 可用,redis-py 将尝试使用它来解析响应。

$ pip install "redis[hiredis]"

在寻找处理对象映射的高级库?请参阅 redis-om-python

支持的 Redis 版本

该库的最新版本支持 Redis 版本 5.06.06.27.07.27.4

下表展示了最新库版本与 Redis 版本的兼容性。

库版本 支持的 Redis 版本
3.5.3 <= 6.2 版本系列
>= 4.5.0 5.0 到 7.0 版本
>= 5.0.0 5.0 到当前版本

翻译如下:

使用方法

基本示例

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

上述代码连接到 localhost 上的端口 6379,在 Redis 中设置一个值,并检索该值。所有响应在 Python 中均以字节形式返回,若要接收解码后的字符串,设置 decode_responses=True。关于此选项及更多连接选项,请参阅这些示例

RESP3 支持

要启用 RESP3 支持,请确保客户端至少为 5.0 版本,并将连接对象中的协议设置为 protocol=3

>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0, protocol=3)

连接池

默认情况下,redis-py 使用连接池来管理连接。每个 Redis 类的实例都会获得自己的连接池。不过,你可以定义自己的 redis.ConnectionPool

>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.Redis(connection_pool=pool)

或者,你可以查看 异步连接集群连接,甚至是 异步集群连接

Redis 命令

redis-py 内置支持所有开箱即用的 Redis 命令。这些命令使用原始的 Redis 命令名(如 HSETHGETALL 等)进行暴露,除了某些被语言保留的关键字(例如 del)。完整的命令集可以在此处文档中找到。

高级主题

官方 Redis 命令文档很好地解释了每个命令的详细信息。redis-py 尽量遵守官方命令语法,但有一些例外:

  • MULTI/EXEC:这些命令作为 Pipeline 类的一部分实现。默认情况下,执行时会将 Pipeline 包裹在 MULTI 和 EXEC 语句中,可以通过指定 transaction=False 来禁用此行为。更多关于 Pipeline 的内容请见下文。

  • SUBSCRIBE/LISTEN:与 Pipeline 类似,PubSub 被实现为一个单独的类,因为它将底层连接置于无法执行非 PubSub 命令的状态。调用 Redis 客户端的 pubsub 方法将返回一个 PubSub 实例,在该实例中可以订阅频道并监听消息。只能从 Redis 客户端调用 PUBLISH(详情请参阅关于 issue #151 的评论)。

有关更多详细信息,请参阅高级主题页面上的文档。

翻译如下:

管道(Pipelines)

以下是一个 Redis 管道 的基本示例。管道是一种通过批量发送 Redis 命令并以列表形式接收其结果来优化往返调用的方法。

>>> pipe = r.pipeline()
>>> pipe.set('foo', 5)
>>> pipe.set('bar', 18.5)
>>> pipe.set('blee', "hello world!")
>>> pipe.execute()
[True, True, True]

发布/订阅(PubSub)

以下示例展示了如何使用 Redis 发布/订阅(Pub/Sub) 订阅特定频道。

>>> r = redis.Redis(...)
>>> p = r.pubsub()
>>> p.subscribe('my-first-channel', 'my-second-channel', ...)
>>> p.get_message()
{'pattern': None, 'type': 'subscribe', 'channel': b'my-second-channel', 'data': 1}

作者

redis-py 由 Redis Inc 开发和维护。你可以在这里找到它,或从 pypi 下载。

特别感谢:

  • Andy McCurdy (sedrik@gmail.com),redis-py 的原作者。
  • Ludovico Magnocavallo,原 Python Redis 客户端的作者,其中的一些 socket 代码仍在使用。
  • Alexander Solovyov,提出了通用响应回调系统的想法。
  • Paul Hubbard,为最初的打包提供支持。

Redis