• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    高效异步redis客户端aredis优劣势原理解析

    背景

    aredis 是一款由同步的 redis 客户端 redis-py 改写而成的高效的异步 redis 客户端,在最新的 1.0.7 版本中完成了对于 redis 集群的支持。

    改动

    主要重写了底部建立连接和读取数据部分的代码,接口部分都向下兼容,便于使用者从 redis-py 的同步代码迁移到 async 和 await 的协程版本,详细文档请看 aredis 文档

    使用

    安装 pip install aredis

    具体姿势可以参阅项目文档和例子,接口向下兼容 redis-py,支持 Python 3.5 及以上版本,在最新的 1.0.7 版本中也支持 redis cluster,并且对于 Python 3.6 还支持各个数据类型的 scan iter 操作。

    一个简单的例子如下所示:

    >>> import aredis
    >>> import asyncio
    >>> r = aredis.StrictRedis(host='localhost', port=6379, db=0)
    >>> loop = asyncio.get_event_loop()
    >>> async def test():
    >>> await r.set('foo', 'bar')
    >>> print(await r.get('foo'))
    >>> loop.run_until_complete(test())
    b'bar'

    优势

    使用了协程的异步客户端相较于同步客户端来说由于使用了 Python 的事件循环等多余代码,实际上运行效率是较低的,但是好处在于它不会阻塞你的 io,你可以在网络 io 进行的同时进行别的操作,aredis 比较适用于爬虫、http 服务器等密集网络 io 的操作,使得你的代码不用等上 redis 操作的时间。

    而相比于现有的两款支持 async/await 的 redis 客户端来说:

    aioredis:

    aioredis 要求装上 hiredis , 而 aredis 可以不需要相关依赖地运行,速度上两者持平且都可以使用 hiredis 来作为 parser ,用 uvloop 代替 asyncio 的 eventloop 来加速

    asyncio_redis:

    asyncio_redis 使用了 Python 提供的 protocol 来进行异步通信,而 aredis 则使用 StreamReader 和 StreamWriter 来进行异步通信,在运行速度上两倍于 asyncio_redis ,附上 benchmark

    而且以上两款客户端目前都还没有对于集群的支持,相对来说 aredis 的功能更为全面一些。

    劣势

    现在对于编码的支持还不是那么完善,大部分命令还是用 bytes 类型作为返回值,且目前只支持 Python 3.5 及以上的版本

    前排求 star 和 pr 0- 0

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 简单了解redis常见客户端及Sharding机制原理
    • Spring Boot Redis客户端远程操作实现过程解析
    • PHP Swoole异步Redis客户端实现方法示例
    • Java客户端利用Jedis操作redis缓存示例代码
    • java客户端Jedis操作Redis Sentinel 连接池的实现方法
    • 详解java 客户端链接不上redis解决方案
    • Redis的Python客户端redis-py安装使用说明文档
    上一篇:如何利用Redis分布式锁实现控制并发操作
    下一篇:redis中scan命令的基本实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    高效异步redis客户端aredis优劣势原理解析 高效,异步,redis,客户端,