高效异步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
本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 高效异步redis客户端aredis优劣势原理解析
相关文章
- 解锁 Redis 分库分表的奥秘(redis分库分表)
- Redis Setnx:防止脏写入的完美利器(redis 的Setnx)
- 深入探索如何连接Redis客户端(怎么连接redis客服端)
- 探索Redis库如何查询数据(怎么查询redis库数据)
- 异步更新Redis优化你的数据流(异步更新redis的数据)
- 异步Redis订阅模式下的强大功能(异步redis订阅)
- 使用Python快速轻松构建Redis客户端(简单实现redis客户端)
- 如何使用桌面客户端连接Redis服务器(桌面redis怎么连接)
- 查看Redis日志的命令行使用指南(查看redis日志命令行)
- 深入了解Redis探索Redis客户端功能(查看redis客户端)
- 解决Redis客户端未初始化问题(未初始化redis客户端)
- 存储深入探索Redis微型存储技术(深入理解redis 微盘)
- 是否有必要采用Redis(有必要用redis吗)
- 拥有最出色性能的Redis客户端(最好的redis客户端)
- 云Redis简单易用的极速存储服务(云redis怎么用)
- 双端同步Redis客户端间的奥秘(两个redis客户端同时)
- 数据库解决方案如何使用SAP创建Redis数据库(sap怎么创建redis)
- 如何快速安装Redis客户端(如何安装redis客户端)
- 掌握Redis客户端的基本技能(如何redis客户端)
- 快速启动本地Redis客户端(启动redis本地客户端)
- Mac版Redis可视化编辑引领时尚程序设计(可视化mac版redis)
- Redis集群保障高并发性能(redis 集群高并发)
- 客户端Java客户端快速关闭Redis连接(关闭redis的java)
- 使用Redis队列实现高效消息处理(redis队列设置)
- Redis队列实现异步存储数据(redis队列异步存数据)
- Redis连接数优化实现更高性能(redis 连接数 优化)
- 利用Redis加速接口性能测试(redis进行接口测试)
- Redis读写异步数据传输拖落不定(redis读写速度不一致)
- 基于Redis读写分离的客户端开发实践(redis读写分离客户端)
- 利用Redis实现高性能计数器(redis设置计数器)
- 利用Redis实现可靠的订阅发布系统(redis 订阅发布系统)
- 在Redis中获取经纬度信息(redis获取经纬度)
- Redis实现快速获取客户端数量(redis获取客户端数量)