Redis数据库和键值存储的Python客户端
项目描述
redis-py
Redis键值存储的Python接口。
**注意:** redis-py 5.0将是最后一个支持Python 3.7的redis-py版本,因为它已经达到了生命周期的结束。redis-py 5.1将支持Python 3.8+。
如何使用Redis?
安装
通过Docker启动redis
docker run -p 6379:6379 -it redis/redis-stack:latest
要安装redis-py,只需
$ pip install redis
为了提高性能,安装带有hiredis支持的redis,这提供了一个编译后的响应解析器,并且在大多数情况下不需要更改代码。默认情况下,如果hiredis >= 1.0可用,redis-py将尝试使用它进行响应解析。
$ pip install "redis[hiredis]"
寻找一个处理对象映射的高级库?请查看 redis-om-python!
支持的Redis版本
此库的最新版本支持redis版本 5.0、6.0、6.2、7.0、7.2 和 7.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'
上述代码连接到本地主机上的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命令都得到了支持。它们使用原始Redis命令名称(如HSET
、HGETALL
等)公开,除非某个单词(例如del)被语言保留。完整的命令集可以在这里或文档中找到。
高级主题
官方Redis命令文档详细解释了每个命令。redis-py试图遵守官方命令语法。有一些例外
-
MULTI/EXEC:这些作为Pipeline类的部分实现。默认情况下,当执行管道时,它会用MULTI和EXEC语句包装,可以通过指定transaction=False来禁用。有关管道的更多信息,请参阅下面的内容。
-
SUBSCRIBE/LISTEN:与管道类似,PubSub作为单独的类实现,因为它将底层连接置于无法执行非pubsub命令的状态。从Redis客户端调用pubsub方法将返回一个PubSub实例,您可以在其中订阅频道并监听消息。您只能从Redis客户端调用PUBLISH(有关详细信息,请参阅问题#151的此评论)。
有关更多信息,请参阅高级主题页面上的文档。
管道
以下是一个基本的Redis管道示例,这是一种优化往返调用的方法,通过批量执行Redis命令,并将结果作为列表接收。Redis管道。
>>> pipe = r.pipeline()
>>> pipe.set('foo', 5)
>>> pipe.set('bar', 18.5)
>>> pipe.set('blee', "hello world!")
>>> pipe.execute()
[True, True, True]
Pub/Sub
以下示例展示了如何使用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 ([email protected]),redis-py的原始作者。
- Ludovico Magnocavallo,原始Python Redis客户端的作者,其中一些套接字代码仍在使用。
- Alexander Solovyov,对通用响应回调系统的想法。
- Paul Hubbard,提供初始打包支持。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。