点 速度的未来即将来到您所在城市的活动中。

加入我们,参加 Redis Released

大家好 redis-py,好久不见

已发布 redis-py 4.1.0!

对 Redis 的 Python 支持已持续十多年,每周的下载量超过 100 万次,我们很荣幸地宣布最新版本 redis-py 4.1.0! 

此版本为我们提供了几乎完美无缺的Redis 命令支持,达到唾手可得的程度。我们为现有命令添加了对丢失选项的支持,为 Sentinel 连接添加了 SSL 支持,总体上提升了开发人员体验。它还引入了较大的结构性变动,如专注于 Python 3.6 以及甚至支持 Python 3.10。我们改造了客户端文档,使其查找 Redis 命令变得更为容易,并鼓励每个人都参与进来!更重要的是,我们已在造成极小干扰的情况下完成了此项工作,因此您可以在没有任何兼容性问题的情况下进行升级。

支持最新的 Redis 命令

Redis 6.2 推出了众多新的 Redis 命令,现在,使用 Python 来使用这些命令比以往都更加轻松。从使用GETEX在单个命令中轻松获取数据并更新其过期时间,到使用CLIENT INFOCLIENT KILL管理 Redis 实例,再到终止客户端的连接,redis-py 4.1.0 已为您提供全方位支持。我们来看看下面 redis-py 4.1.0 中添加的 30 多个命令中的两个示例吧!

### GETEX
import redis
r = redis.Redis()
r.set('somekey', 'hello')
r.getex('somekey', ex=15) # returns 'Hello'
r.ttl('somekey') # returns 15
​
​
### CLIENT INFO AND KILL
import redis
r = redis.Redis()
r2 = redis.Redis()
r.client_setname('redis-py-c1')
r2.client_setname('redis-py-c2')
​
clients = [client for client in r.client_list()
                   if client.get('name') in ['redis-py-c1', 'redis-py-c2']]
clients_by_name = dict([(client.get('name'), client)
                                for client in clients])
r.client_kill_filter(laddr=clients_by_name['redis-py-c2'].get('laddr'))

一流 Redis 模块支持

redis-py 4.0 是第一个为 Redis 模块提供一流支持的 Python 库版本。随着 redis-py 4.1.0 的发布,我们现在支持RedisJSONRediSearchRedisTimeSeriesRedisGraphRedisBloom。没错,您可以在 Redis 中轻松存储 JSON 数据!您可以对其进行操作——甚至对其进行搜索!只需记住,当您将 JSON 数据存储在 Redis 中时,您存储的是一种新的数据类型,所以您需要使用专用于 JSON 的命令来对其进行操作。下面列出了一些示例

### STORING and RETRIEVING JSON
​
import redis
r = redis.Redis()
myDoc = {'hello', 'world', 'colours': ['red', 'blue', 'green'], 'hmm': {'hello': 'again'}}
r.json().set('colors', '$', myDoc)
r.json().get('colors')

上述类似于 myDoc 的文档又如何呢?您知道您可以通过查询文档的一部分来获取多个键吗?

### FETCHING ALL KEYS NAMED “hello” from the JSON document
r.json().get('colors', '$..hello')

您甚至可以将RedisJSON 与 RediSearch结合使用以实现文档功能,或者添加自定义 Redis 模块支持。redis-py 4.0 已包含所有这些功能。

redis-py 中的 Redis 集群支持

您知道 redis-py 4.1.0 现在还集成了 redis-cluster 支持,并提供了两种简单的连接方式吗?在 redis-py 中,现在,您可以在与独立 Redis 节点交互时享受到同样出色的体验了。

### CONNECTING TO CLUSTER
from redis.cluster import RedisCluster
r = RedisCluster.from_url('redis://4.5.6.8:6379')
nodes = r.get_nodes()

也许您想通过 SSL 连接到您的集群,或更喜欢基于课堂初始化的方法,并且想运行命令,针对特定节点。redis-py 4.1.0 也支持这些场景!

### CONNECTING TO CLUSTER 2
from redis.cluster import RedisCluster
r = RedisCluster('4.5.6.8', port=6379, ssl=True)
r.ping(target_nodes='all')

接下来是什么?

工作永不停歇,我们全力以赴!我们将添加对更多模块的支持,例如 RedisAI,并提供同类最佳的体验。我们将添加对 RESP3 函数的支持,该函数将在 Redis 7 中发布,并且可以加快代码基础的速度。我们还在开发开发者工具,以使在 redis-py 中做出贡献和工作变得更简单!