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

2015-11-17 18:54:56 +08:00
 fsp
如果你是性能党,还有比使用 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/
2672 次点击
所在节点    Python
4 条回复
mulog
2015-11-17 23:01:48 +08:00
已 star 最近刚好在弄 redis
文档看起来写得不错 良心 :p
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
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
2016-02-03 10:39:31 +08:00
很好的项目。
可惜不支持 python3 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX