asyncio (PEP 3156) Redis支持
项目描述
asyncio (PEP 3156) Redis客户端库。
功能
hiredis 解析器 |
是 |
纯Python解析器 |
是 |
低级 & 高级API |
是 |
连接池 |
是 |
管道支持 |
是 |
发布/订阅支持 |
是 |
SSL/TLS支持 |
是 |
哨兵支持 |
是 |
Redis集群支持 |
进行中 |
Trollius (python 2.7) |
否 |
测试的CPython版本 |
|
测试Redis服务器 |
|
通过低级API支持开发Redis服务器 |
文档
使用示例
具有连接池的简单高级接口
import asyncio
import aioredis
async def go():
redis = await aioredis.create_redis_pool(
'redis://localhost')
await redis.set('my-key', 'value')
val = await redis.get('my-key', encoding='utf-8')
print(val)
redis.close()
await redis.wait_closed()
asyncio.run(go())
# will print 'value'
需求
注意
hiredis是首选需求。纯Python协议解析器也已实现,可以通过parser参数使用。
基准测试
基准测试可以在以下位置找到: https://github.com/popravich/python-redis-benchmark
讨论列表
aio-libs google群组: https://groups.google.com/forum/#!forum/aio-libs
或gitter房间: https://gitter.im/aio-libs/Lobby
许可证
aioredis在MIT许可证下提供。
变更
1.3.4 (2022-02-02)
修复async_timeout>=4.x的弃用警告;
1.3.3 (2022-01-31)
添加Python 3.10支持;
1.3.2 (2022-01-28)
无更改,发布测试新名称的发布包。
1.3.1 (2019-12-02)
错误修复
弃用和移除
在API中取消对显式循环的要求。弃用 loop 参数。如果在Python 3.8+中将显式 loop 传递给方法,则抛出警告。(见 #666);
其他
1.3.0 (2019-09-24)
功能
添加了 xdel 和 xtrim 方法,这些方法在 commands/streams.py 中缺失,并为其添加了单元测试代码(见 #438);
将 count 参数添加到 spop 命令中(见 #485);
添加了对 zpopmax 和 zpopmin Redis 命令的支持(见 #550);
添加 towncrier:变更说明现在存储在 CHANGES.txt 中(见 #576);
库的类型提示(见 #584);
对有序集合命令的一些补充
阻塞弹出命令: BZPOPMAX 和 BZPOPMIN
命令 ZADD 的 CH 和 INCR 选项
(见 #618);
在 commands/streams.py 中的 xread_group 流方法中添加了 no_ack 参数(见 #625);
错误修复
改进文档
重写“入门”文档。(见 #641);
其他
1.2.0 (2018-10-24)
NEW:
FIX:
修复了Python 3.7兼容性问题(见 #426);
修复了文档中的错别字(见 #400);
修复了 INFO 命令结果解析问题(见 #405);
修复了 ConnectionsPool._drop_closed 方法中的问题(见 #461);
MISC:
更新依赖项版本;
多次测试改进;
1.1.0 (2018-02-16)
NEW:
FIX:
重要!修复池 minsize 大于1时的Sentinel客户端(见 #380);
修复 SentinelPool.discover_timeout 的使用(见 #379);
修复了在调用 StreamReader 的 feed_data 之前设置解析器的问题(参见 #347);
MISC:
更新依赖项版本;
多个测试修复;
1.0.0 (2017-11-17)
NEW:
重要! 连接池重构;现在 create_redis 函数将生成 Redis 实例而不是 RedisPool(参见 #129);
重要! 更改有序集合命令的回复格式:对于接受 withscores 参数的命令,返回元组列表而不是普通列表(参见 #334);
重要! 更改 hscan 命令的回复格式:返回元组列表而不是混合的键值列表(参见 #335);
实现 Redis URI 支持,作为支持的 address 参数值(参见 #322);
删除 create_reconnecting_redis,应使用 create_redis_pool 替代;
实现自定义 StreamReader(参见 #273);
实现 Sentinel 支持(参见 #181);
实现纯 Python 解析器(参见 #212);
添加 migrate_keys 命令(参见 #187);
添加 zrevrangebylex 命令(参见 #201);
添加 command,command_count,command_getkeys 和 command_info 命令(参见 #229);
在 pubsub 连接中添加 ping 支持(参见 #264);
将 exist 参数添加到 zadd 命令中(参见 #288);
添加 MaxClientsError 并实现 ReplyError 特化(参见 #325);
将 encoding 参数添加到有序集合命令中(参见 #289);
FIX:
修复 conn._reader_task 中的 CancelledError(参见 #301);
修复使用 CancelledError 取消挂起命令,使用显式异常而不是调用 cancel() 方法(参见 #316);
修复在发现带有密码的主/从 Sentinel 时的错误消息(参见 #327);
修复作为命令参数的 bytearray 支持(参见 #329);
修复修补的 asyncio.Lock 中的关键错误(参见 #256);
修复 Multi/Exec 事务取消错误(参见 #225);
为create_redis和create_redis_pool添加缺少的参数;
修复了弃用警告(见#191);
修正了正确的__aiter__()(见#192);
修复了with (yield from pool) as conn:的向后兼容性(见#205);
修复了pubsub接收器的stop()(见#211);
MISC:
多个测试修复;
将PyPy3添加到构建矩阵中;
更新依赖项版本;
添加缺少的Python 3.6分类器;
0.3.5 (2017-11-08)
FIX:
修复了与asyncio.CancelledError无法区分的未来取消问题(见#316),从master中挑选;
0.3.4 (2017-10-25)
FIX:
修复了使用连接范围编码设置时时间命令结果解码问题(见#266);
0.3.3 (2017-06-30)
FIX:
修复了修补后的asyncio.Lock中的关键漏洞(见#256);
0.3.2 (2017-06-21)
NEW:
FIX:
0.3.1 (2017-05-09)
FIX:
修复了pubsub Receiver缺少iter()方法(见#203);
0.3.0 (2017-01-11)
NEW:
Pub/Sub连接命令接受Channel实例(见#168);
实现新的Pub/Sub MPSC(多生产者,单消费者)队列 – aioredis.pubsub.Receiver(见#176);
添加aioredis.abc模块,提供定义基本库组件接口的抽象基类;(见#176);
FIX:
一些小的测试修复;
MISC:
0.2.9 (2016-10-24)
NEW:
FIX:
MISC:
更新devel.rst文档;更新Pub/Sub Channel文档(交叉引用);
更新MANIFEST.in以包括源包中的文档、示例和测试;
0.2.8 (2016-07-22)
NEW:
添加hmset_dict命令(见#130);
添加RedisConnection.address属性;
RedisPool的minsize/maxsize不能为None;
为池实现close()/wait_closed()/closed接口(见#128);
FIX:
为hstrlen添加测试;
测试修复;
MISC:
在Travis上启用Redis 3.2.0;
在构建文档时添加拼写检查(见#132);
文档已更新;
0.2.7 (2016-05-27)
create_pool() 的 minsize 默认值已更改为 1;
修复了 wait_closed 的取消问题(参见 #118);
修复了 time() 转换为浮点数的问题(参见 #126);
修复了 hmset() 方法,使其返回 bool 而不是 b'OK'(参见 #126);
修复了 multi/exec + watch 的问题(修改后的 watch 变量导致 tr.execute() 失败)(参见 #121);
用工具方法替换了 asyncio.Future 的使用(准备使用 Python 3.5.2 的 loop.create_future());
测试从 unittest 切换到 pytest(参见 #126);
文档更新;
0.2.6 (2016-03-30)
0.2.5 (2016-03-02)
在连接关闭时关闭所有 Pub/Sub 通道(参见 #88);
向 aioredis.Channel 添加了 iter() 方法,允许使用它与 async for 一起使用(参见 #89);
在文档中的内联代码示例使其可运行和可下载(参见 #92);
将 Python 3.5 示例转换为使用 async/await 语法(参见 #93);
在 create_connection 中添加了调试消息(参见 #90);
用尊重 asyncio 版本的包装器替换了 asyncio.async 调用(参见 #101);
为 TCP 套接字使用 NODELAY 选项(参见 #105);
添加了新的 aioredis.ConnectionClosedError 异常。如果连接到 Redis 服务器丢失,则抛出(参见 #108 和 #109);
修复了 RedisPool,在释放时关闭和丢弃连接;
修复了 aioredis.util.decode 以递归地解码列表响应;
添加了更多示例并更新了文档;
在 README 中添加了 Google 群组链接;
在 LICENSE 和文档中更新年份;
0.2.4 (2015-10-13)
Python 3.5 支持;
新扫描命令 API(iscan、izscan、ihscan);
使 Pool 可等待(允许 with await pool: ... 和 async with pool.get() as conn: 结构);
修复了从空闲池中丢弃已关闭连接的问题(参见 #83);
更新了文档;
0.2.3 (2015-08-14)
0.2.2 (2015-07-07)
使用 encoding 参数解码数据现在考虑了列表(数组)回复(见 #68);
encoding 参数添加到以下命令
通用命令:keys,randomkey;
哈希命令:hgetall,hkeys,hmget,hvals;
列表命令:blpop,brpop,brpoplpush,lindex,lpop,lrange,rpop,rpoplpush;
集合命令:smembers,spop,srandmember;
字符串命令:getrange,getset,mget;
向后不兼容
ltrim 命令现在返回布尔值而不是“OK”;
测试更新;
0.2.1 (2015-07-06)
添加了日志记录(aioredis.log 模块);
修复了 pub/sub 中的 wait_message 问题(见 #66);
0.2.0 (2015-06-04)
添加了 pub/sub 支持;
zrevrangebyscore 命令修复(见 #62);
修复/测试/文档;
0.1.5 (2014-12-09)
添加了 AutoConnector;
添加了 wait_closed 方法以进行干净的连接关闭;
zscore 命令修复;
测试修复;
0.1.4 (2014-09-22)
删除以下 Redis 方法 – Redis.multi(),Redis.exec(),Redis.discard();
移除了 Redis.multi_exec 的“黑客式”属性;
添加了 Redis.multi_exec() 方法;
实现了高级命令
通用命令(测试);
事务命令(API 稳定化)。
向后不兼容
以下排序集命令的 API 已更改
zcount,zrangebyscore,zremrangebyscore,zrevrangebyscore;
集合字符串命令的 API 已更改;
0.1.3 (2014-08-08)
RedisConnection.execute 重构以支持命令管道(见 #33);
几个修复;
事务和命令接口的 WIP;
实现了并测试了高级命令
哈希命令;
hyperloglog 命令;
集合命令;
脚本命令;
字符串命令;
列表命令;
0.1.2 (2014-07-31)
0.1.1 (2014-07-07)
事务支持(在连接中,高级命令有一些问题);
更新了文档和测试。
0.1.0 (2014-06-24)
初始发布;
实现了 RedisConnection;
实现了 RedisPool;
RedisConnection 和 RedisPool 的文档;
高阶 API 的 WIP。
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。