异步(PEP 3156)Redis支持

aioredis的Python项目详细描述


功能

<表> < COLGROUP > < COL/> < COL/> <正文> hiredis 解析器 是 纯python解析器 是 低级和高级api 是 连接池 是 管道支架 是 发布/订阅支持 是 SSL/TLS支持 是 哨兵支援 是 redis集群支持 在制品 trollius(python 2.7) 否 测试的cpython版本 3.5、3.6和3.7 [2] 测试的PY3版本 5.9.0 测试redis服务器 2.6、2.8、3.0、3.2、4.0 对dev redis服务器的支持 通过低级api <表> <正文> <表>

用法示例

简单的低级接口:

啊!

简单的高级界面:

啊!

连接池:

啊!

具有连接池的简单高级接口:

啊!

要求

< div >

注意

优先考虑雇佣者。 还实现了纯python协议解析器,并可以使用 通过 解析器 参数。

基准

基准测试可以在这里找到:https://github.com/reparaich/python-redis-benchmark" rel="nofollow">https://github.com/reparaich/python-redis-benchmark

许可证

aioredis是根据麻省理工学院的许可证提供的。

更改

1.2.0(2018-10-24)

新的

  • 实现了新的流命令支持 (请参见 299 );
  • 减少约60%的成本 (请参见 397 );

修复

  • fix pipeline命令缓冲导致多个系统调用 (请参见 464 以及 473 );
  • Python3.7兼容性修复 (请参见 426 );
  • 修正文档中的错误 (请参见 400 );
  • 修复命令结果分析 (请参见 405 );
  • 修复连接池中的错误。关闭drop方法 (请参见 461 );

其他

  • 更新依赖项版本;
  • 多项测试改进;

1.1.0(2018-02-16)

新的

  • 执行新命令: wait touch swapdb unlink (请参见 376 );
  • async_op 参数添加到 flushall flushdb 命令 (请参见 364 , 以及 370 );

修复

  • 重要! 使用池修复sentinel sentinel客户端 minSize 大于1 (请参见 380 );
  • 修复sentinelpool.discover_timeout的用法 (请参见 379 );
  • 固定接收器 (请参见 354 , 以及 366 );
  • 使用空池修复 subscribe / psubscribe 的问题 (请参见 351 , 以及 );
  • 修复在set解析器之前调用streamreader的feed数据时出现的问题 (请参见 347 );

其他

  • 更新依赖项版本;
  • 多个测试修复程序;

1.0.0(2017-11-17)

新的

  • 重要! 放弃python 3.3、3.4支持; (请参见 321 323 以及 326 );
  • 重要! 连接池已经重构;现在 创建redis 函数将产生 redis 实例,而不是 redispool (请参见 129 );
  • 重要! 更改排序集命令答复格式: 返回元组列表,而不是命令的纯列表 接受带有cores的 参数 (请参见 。#334 );
  • 重要! 更改 hscan 命令回复格式: 返回元组列表而不是混合键值列表 (请参见 335 );
  • 实现redis uri支持 (请参见 322 );
  • dropped create_reconnecting_redis create_redis_pool 应该是 代替使用;
  • 实现自定义的streamreader (请参见 273 );
  • 实施哨兵支援 (请参见 181 );
  • 实现纯python解析器 (请参见 212 );
  • 添加migrate_键 (请参见 187 );
  • 添加 zrevrangebylex 命令 (请参见 201 );
  • 添加命令 命令计数 命令获取键 命令信息 (请参见 229 );
  • 添加pubsub连接中的ping支持 (请参见 264 );
  • exist 参数添加到 zadd 命令 (请参见 288 );
  • 添加maxclientserror并实现replyerror专门化 (请参见 325 );
  • 编码 参数添加到排序的set命令 (请参见 289 );

修复

  • 修复连接读卡器任务中的取消错误 (请参见 301 );
  • cancellederror修复挂起的命令取消, 使用显式异常而不是调用 cancel() 方法 (请参见 316 );
  • 使用密码更正主/从哨兵发现的错误消息 (请参见 327 );
  • 修正了bytearray对命令参数的支持 (请参见 329 );
  • 修复修补的asyncio.lock中的严重错误 (请参见 256 );
  • 修复multi/exec事务取消错误 (请参见 225 );
  • 将缺少的参数添加到 create戋redis create戋redis戋pool
  • 修正折旧警告 (请参见 191 );
  • 修正 (请参见 192 );
  • 的向后兼容性修复,以(池的收益率)作为连接: (请参见 205 );
  • 修复了pubsub接收器停止() (请参见 211 );

其他

  • 多个测试修复程序;
  • 将pypy3添加到构建矩阵;
  • 更新依赖项版本;
  • 添加缺少的Python3.6分类器;

0.3.5(2017-11-08)

修复

  • 修复无法区分的期货取消 异步。取消错误 (见<="https://github.com/aio-libs/aioredis/pull/316" rel="nofollow">316), 从师父那里采摘的樱桃;

0.3.4(2017-10-25)

修复

  • 使用连接范围编码设置时的固定时间命令结果解码 (请参见 266 );

0.3.3(2017-06-30)

修复

  • 已修补的asyncio.lock中修复的严重错误 (请参见 256 );

0.3.2(2017-06-21)

新的

  • 添加了 zrevrangebylex 命令 (请参见 201 ), 从师父那里采摘的樱桃;
  • 添加连接超时 (请参见 221 ), 从师父那里采摘的樱桃;

修复

  • 固定池关闭警告 (请参见 239 以及 236 ), 从师父那里采摘的樱桃;
  • 修复了异步锁死锁问题 (请参见 231 以及 241 );

0.3.1(2017-05-09)

修复

  • 修复pubsub接收器缺少iter()方法 (请参见 203 );

0.3.0(2017-01-11)

新的

  • pub/sub连接命令接受通道实例 (请参见 168 );
  • 实施新的发布/订阅MPSC(多生产商、单消费者)队列- 所有发布接收器 (请参见 176 );
  • 添加提供抽象基类的模块 定义基本库组件的接口; (请参见 176 );
  • 实施地理命令支持 (请参见 177 以及 179 );

修复

  • 小测试修复;

其他

  • 更新示例和文档以使用异步语法 同时保持历史样本的收益率 (请参见 173 );
  • 回流Travis CI配置;添加Python3.6部分 (请参见 170 );
  • 添加AppVeyor集成以在Windows上运行测试 (请参见 180 );
  • 更新多个开发需求;

0.2.9(2016-10-24)

新的

  • 允许 中存在多个键 (请参见 156 以及 157 );

修复

  • 连接到redis失败时关闭redispool (请参见 136 );
  • 添加简单的命令参数验证 (请参见 140 );
  • 删除 next()
  • 的无效用法

其他

  • 更新devel.rst文档;更新发布/子频道文档(交叉引用);
  • 更新manifest.in以在源包中包含文档、示例和测试;

0.2.8(2016-07-22)

新的

  • 添加 hmset_dict 命令 (请参见 130 );
  • 添加redisconnection.address属性
  • redispool minsize / maxsize 不能
  • 实现池接口 (请参见 128 );

修复

  • hstrlen
  • 添加测试
  • 测试修复

其他

  • 在Travis上启用Redis 3.2.0;
  • 生成文档时添加拼写检查 (请参见 132 );
  • 文档已更新;

0.2.7(2016-05-27)

  • create_pool() minSize默认值更改为1;
  • 已关闭等待的固定取消 (请参见 118 );
  • 固定 时间() 转换为浮点 (请参见 126 );
  • 修正了返回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)

  • 修复了多个/exec事务取消问题 (请参见 110 以及 114 );
  • 修复了发布/订阅并发问题 (请参见 113 以及 115 );
  • 添加SSL/TLS支持 (请参见 116 );
  • 在执行pubsub中引发的aioredis.connectionclosederror (请参见 108 );
  • redis.slaveof() 方法签名已更改:现在禁用 复制应该调用 redis.slaveof(none) ,而不是 redis.slaveof()
  • 添加了更多测试;

0.2.5(2016-03-02)

  • 连接关闭时关闭所有发布/订阅频道 (请参见 88 );
  • iter() 方法添加到允许使用它的aioredis.channel 对于 (请参见 89 );
  • 文档中的内联代码示例使其可以运行和下载 (请参见 92 );
  • python 3.5转换为使用异步语法的示例 (请参见 93 );
  • 修复multi/exec以接受编码参数 (请参见 94 以及https://github.com/aio-libs/aioredis/issues/97" rel="nofollow">97);
  • 创建连接中添加调试消息 (请参见 90 );
  • 用尊重asyncio版本的包装器替换asyncio.async调用 (请参见 101 );
  • 对TCP套接字使用nodelay选项 (请参见 105 );
  • 新增异常。提出如果 与redis服务器的连接丢失 (参见 108 以及 109 );
  • 修正redispool在发布时关闭并断开订阅模式的连接;
  • 修复aioredis.util.decode以递归解码列表响应;
  • 添加了更多示例并更新了文档;
  • 将Google Groups链接添加到自述文件;
  • 在许可证和文档中增加年份;

0.2.4(2015-10-13)

  • python 3.5异步支持:
    • 新的扫描命令api( iscan izscan ihscan );
    • 使等待池成为可等待的(允许使用等待池:… 和异步 以pool.get()作为连接: 构造);
  • 修复了从空闲池删除关闭连接的问题 (请参见 83 );
  • 文档已更新;

0.2.3(2015-08-14)

  • Redis群集支持工作正在进行中;
  • 修复了导致池增长超过最大大小的池问题&; 获取 调用挂起 (请参见 71 );
  • 信息 执行服务器命令结果分析;
  • util函数的固定行为 (请参见 70 );
  • hstrlen 命令已添加;
  • 示例中很少修复;
  • 文档中很少有修复程序;

0.2.2(2015-07-07)

  • 使用 encoding 参数解码数据时,现在考虑了 列表(数组)答复 (请参见 68 );

  • 编码 添加到以下命令的参数:

    • 常规命令:键,随机键;
    • 哈希命令:hgetall、hkeys、hmget、hvals;
    • 列表命令:blpop、brpop、brpoplpush、lindex、lpop、lrange、rpop、rpoplppush;
    • set命令:smembers、spop、srandmember;
    • 字符串命令:getrange、getset、mget;
  • 向后不兼容:

    ltrim 命令现在返回bool值而不是"ok";

  • 测试已更新;

0.2.1(2015-07-06)

  • 日志记录已添加(aioredis.log模块);
  • 修正了pub/sub中的wait_消息的问题 (请参见 66 );

0.2.0(2015-06-04)

  • 添加了发布/订阅支持;
  • 修正 zrevrangebyscore 命令 (请参见 62 );
  • 修复/测试/文档;

0.1.5(2014-12-09)

  • 已添加自动连接程序;
  • 添加了wait_closed方法以关闭干净的连接;
  • zscore 命令已修复;
  • 测试修复;

0.1.4(2014-09-22)

  • 删除了以下redis方法– redis.multi() redis.exec() redis.discard()

  • 删除redis.multi_exec的hack'ish属性;

  • redis.multi_执行已添加方法;

  • 执行高级命令:

    • 通用命令(测试);
    • 事务命令(API稳定)。
  • 向后不兼容:

    • 以下已排序集合命令的API已更改:

      zcount zrangebyscore zremrangebyscore zrevrangebyscore

    • 设置字符串命令"api changed;"

0.1.3(2014-08-08)

  • redisconnection.execute重构以支持命令流水线 (请参见 33 );
  • 几个修复程序;
  • 事务和命令界面上的WIP;
  • 执行并测试高级命令:
    • 哈希命令;
    • 超级日志命令;
    • 设置命令;
    • 脚本命令;
    • 字符串命令;
    • 列出命令;

0.1.2(2014-07-31)

  • 创建连接 创建池 创建redis 函数更新: db和password参数仅作为关键字 (请参见 26 );
  • 固定交易处理 (请参见 32 );
  • 响应解码 (请参见 16 );

0.1.1(2014-07-07)

  • 事务支持(在连接中,高级命令有一些问题);
  • 文档和测试已更新。

0.1.0(2014-06-24)

  • 初始版本;
  • 已实现重新发现;
  • 已实现redispool;
  • redisconnection&;redispool;文档
  • 高级API上的WIP。
对于python 3.3、3.4支持,请使用aioredis v0.3。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中超时Future而不使用Future。get()是阻塞操作吗?   使用CXF 2.7.17部署到WebSphere 8.5.5.6的java问题   为什么是布尔。类是java。lang.课堂和字符串。类是java。串?   java是验收测试SOAP Web服务的最佳方法?   java如何替换kotlin中的::new?   字符串LastIndexOf和java。lang.IndexOutOfBoundsException   java移动游戏窗口在其他窗口前面LibGDX   java如何构建真正本地的ApacheSpark“胖”jar。JRE内存问题?   JavaGSON更新json文件   java如何替换字符串中的所有#{key}?   java应用程序没有在Android Pie中获取MySQL数据库   java是否可以在JavaDoc中重用@param描述?   java在MangedBean clsass中的任何@Autowired注入都不起作用,它总是等于NULL吗?   java当我为登录用户创建会话时,如何在struts2中维护hibernate会话?   按反向日期排列的java排序适配器ArrayList   Mockito中带doNothing()的java非类方法?