V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jason0916
V2EX  ›  Python

aredis 1.0.7 - 现已支持 redis cluster

  •  
  •   jason0916 ·
    NoneGG · 2017-05-07 23:35:37 +08:00 · 3730 次点击
    这是一个创建于 2543 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    aredis 是一款由同步的 redis 客户端 redis-py 改写而成的高效的异步 redis 客户端

    改动

    主要重写了底部建立连接和读取数据部分的代码,接口部分都向下兼容,便于使用者从 redis-py 的同步代码迁移到 async 和 await 的协程版本,在目前的版本中已经支持了 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

    以上两个客户端目前都还不支持集群

    劣势

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

    前排求 star 和 pr 0- 0

    项目链接 aredis

    16 条回复    2019-03-01 16:51:00 +08:00
    SlipStupig
        1
    SlipStupig  
       2017-05-07 23:51:42 +08:00
    如果能支持一下 tornado 就更好了
    gulu
        2
    gulu  
       2017-05-08 09:21:35 +08:00 via Android
    @SlipStupig Tornado 不是有个 Tornadis 吗?
    sujin190
        3
    sujin190  
       2017-05-08 09:42:35 +08:00
    @gulu #2 但是慢死了
    jason0916
        4
    jason0916  
    OP
       2017-05-08 10:06:43 +08:00
    @SlipStupig 好的,这个需求我记下了,今天下班调研下能不能做
    GuoEH
        5
    GuoEH  
       2017-05-08 14:12:13 +08:00
    目标菜市场
    jason0916
        6
    jason0916  
    OP
       2017-05-08 15:45:06 +08:00
    @GuoEH 啊?
    jason0916
        7
    jason0916  
    OP
       2017-05-08 17:43:06 +08:00
    @SlipStupig http://www.tornadoweb.org/en/stable/asyncio.html 大佬,我看了眼,貌似 tornado 自身是支持的,不过还没有具体测试过,不知道实际效果如何
    SlipStupig
        8
    SlipStupig  
       2017-05-08 18:16:19 +08:00
    @jason0916 asyncio 只能在 python3+以上运行, tornadis 还行但是太简陋了,解析结果也好奇怪,tornado-redis 不用说了,各种奇怪的错误
    jason0916
        9
    jason0916  
    OP
       2017-05-08 18:22:41 +08:00
    @SlipStupig 我是看 tornado 有提供兼容 asyncio 的 event loop,觉得可以试试 aredis,两者是可以一起用的。这样吧,我晚上测试看看能不能一起用给你个回复吧?
    coder1988
        10
    coder1988  
       2017-05-08 18:25:16 +08:00   ❤️ 1
    看了下,做的不错,aio-redis 和 py-redis 里面的接口 api 不一样,很容易掉进坑里面。
    对于 常用的 set,我向 redis-py PR 说明了 ex nx 参数 不能够 if ex 这样子的判断,你有空了看下。

    https://github.com/andymccurdy/redis-py/pull/848

    我看你的代码也有此问题
    https://github.com/NoneGG/aredis/blob/master/aredis/commands/strings.py

    你觉得可以的话,建议修改下。
    jason0916
        11
    jason0916  
    OP
       2017-05-08 20:35:57 +08:00
    @coder1988 欧好,我看下哈
    jason0916
        12
    jason0916  
    OP
       2017-05-08 20:53:07 +08:00
    @coder1988 测了一发确实存在这个问题,我这边修复了哈,谢谢大佬
    jason0916
        13
    jason0916  
    OP
       2017-05-08 21:14:44 +08:00
    @SlipStupig 大佬,抱歉我这边下班比较晚回复得晚了。写了个例子,能用,因为时间关系没有办法全面地测试了,具体的例子放在了 https://github.com/NoneGG/aredis/blob/master/examples/tornado_server.py
    不介意的话请试用一下吧?要是再碰到什么问题我会跟进的哈,支持流行框架确实是个比较重要的点
    SlipStupig
        14
    SlipStupig  
       2017-05-08 21:32:34 +08:00
    @jason0916 感谢你这么热心,看来我是应该换到 python 3.x 了
    jason0916
        15
    jason0916  
    OP
       2017-05-08 21:33:23 +08:00
    @SlipStupig 哈哈,迁吧迁吧
    nateeinit2
        16
    nateeinit2  
       2019-03-01 16:51:00 +08:00
    aredis 的集群模式连接怎么使用呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4186 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:11 · PVG 12:11 · LAX 21:11 · JFK 00:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.