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
fsp
V2EX  ›  Python

RC: the redis cache 刚刚发布了 0.1 版本,喜欢 cache 的欢迎进来

  •  
  •   fsp ·
    fengsp · 2015-11-17 18:54:56 +08:00 · 2686 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果你是性能党,还有比使用 Cache 更加快捷的办法么?

    目前社区里面有很多 cache 库,不过大部分都是和 web 框架紧密耦合的,比如 Flask-Cache, Werkzeug 自带的 cache , Django 自带的 cache framework, Django 的第三方 backend 比如 django-redis-cache. 相对来说通用的 cache 库就剩下了 beaker.

    我不喜欢 beaker. 很多概念搞得我头大,用起来也不得心应手。

    我几乎试遍了所有的库后,实在找不到满足我需求的东东,思考了一段时间后,我决定自己动手。

    我的需求:

    - 简单易用的 API
    - 支持 Redis (最终我直接做了 Redis Cache)
    - 支持多个 redis server 组成 cache cluster 满足大规模用户量的需求
    - 支持批量读取 cache
    - 对于 cache cluster, 批量获取应该在多个 redis server 上进行并行操作,而不是串行挨个获取结果

    整个过程参考了很多优秀的设计。

    希望能对大家有帮助,有兴趣的点这里:

    主页: https://github.com/fengsp/rc
    文档: http://rc.readthedocs.org/en/latest/
    4 条回复    2016-02-03 10:39:31 +08:00
    mulog
        1
    mulog  
       2015-11-17 23:01:48 +08:00
    已 star 最近刚好在弄 redis
    文档看起来写得不错 良心 :p
    siteshen
        2
    siteshen  
       2015-11-18 02:28:41 +08:00
    大概瀏覽了下,沒明白 CacheCluster 有什麼好處。
    1. 使用原生 redis :怎麼保證 set/get 分發到同一個 node 的?
    2. 使用 redis 3.0 cluster :看示例支持 {"db": 1 },而 redis 3.0 的 cluster 並不支持 db 。
    3. cache 的讀寫分離?
    xiangace
        3
    xiangace  
       2015-11-18 13:14:42 +08:00
    @siteshen 源码里有一个文件 ketama.py, 类似 mc 的 client 机制. 至于要严格在同一个 node ,可能你的场景要求高. 如果纯粹是当做 mc 原来的使用目的, 这个项目也足够了, 再把 redis 禁止 save, 纯缓存服务.
    至于要用到 list 当队列操作 push pop, 这个场景不适合.

    我猜想的是题主的运行环境是一个纯缓存的业务, 替换 mc.

    pipeline 或者 lua 之类的操作, 使用豌豆荚 codis 比较合理, 这类需求出发的设计的话, redis client 的不应该自己实现调度, 而是得写一套中间服务的 proxy. redis-client 只需要做的是 从配置文件或者发现服务取 proxy 地址即可, 那么用原生的 redis-py 配置上现有的框架能满足大多数通用需求. 而且与后端数据服务是如何实现是隔离屏蔽的,不需要了解后端数据接口的具体实现.
    dinw
        4
    dinw  
       2016-02-03 10:39:31 +08:00
    很好的项目。
    可惜不支持 python3 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2765 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.