【发布时间】:2011-04-17 14:44:01
【问题描述】:
我听说过 redis-cache,但它究竟是如何工作的?通过以某种方式缓存 rdbms 查询,它是否用作 django 和我的 rdbms 之间的层?
还是应该直接用作数据库?我对此表示怀疑,因为该 github 页面不包含任何登录详细信息,因此没有设置.. 只是告诉您设置一些配置属性。
【问题讨论】:
我听说过 redis-cache,但它究竟是如何工作的?通过以某种方式缓存 rdbms 查询,它是否用作 django 和我的 rdbms 之间的层?
还是应该直接用作数据库?我对此表示怀疑,因为该 github 页面不包含任何登录详细信息,因此没有设置.. 只是告诉您设置一些配置属性。
【问题讨论】:
这个用于 Redis 的 Python 模块在自述文件中有一个明确的使用示例:http://github.com/andymccurdy/redis-py
Redis 被设计成一个 RAM 缓存。它支持基本的 GET 和 SET 键以及字典等集合的存储。您可以通过将 RDBMS 查询的输出存储在 Redis 中来缓存它们。目标是加速您的 Django 站点。在需要速度之前不要开始使用 Redis 或任何其他缓存 - 不要过早优化。
【讨论】:
Redis 基本上是一个“内存中”的 KV 存储,有很多花里胡哨的东西。它非常灵活。您可以将其用作临时存储,如缓存,或永久存储,如数据库(其他答案中提到的注意事项)。
与 Django 结合使用时,Redis 的最佳/最常见用例可能是缓存“响应”和会话。
这里有一个后端https://github.com/sebleier/django-redis-cache/,这里有 Django 文档中的优秀文档:https://docs.djangoproject.com/en/1.3/topics/cache/。
我最近开始使用https://github.com/erussell/django-redis-status 来监控我的缓存 - 很有魅力。 (在 redis 上配置 maxmemory 否则结果不是很有用)。
【讨论】:
仅仅因为 Redis 将事物存储在内存中并不意味着它就是缓存。我见过人们将它用作数据的持久存储。
它可以用作缓存,这表明它可用作高性能存储。如果您的 Redis 系统出现故障,尽管您可能会丢失未再次写回磁盘的数据。有一些方法可以减轻这种危险,例如一个热备副本。 如果您的数据是“关键任务”,例如您经营一家银行或一家商店,那么 Redis 可能不是您的最佳选择。但是,如果您使用持久的实时数据或一些社交互动内容编写高流量游戏,并且将数据丢失的可能性控制在完全可以接受的范围内,那么 Redis 可能值得一看。
不管怎样,重点是,是的,Redis可以当数据库使用。
【讨论】:
Redis 作为主数据库
是的,您可以使用 Redis 键值存储作为主数据库。 Redis 不仅存储键值对,它还支持不同的数据结构,如
Redis 在内存键值存储中,因此如果发生 Redis 服务器故障,您的数据将会丢失。
Redis 也可以持久化数据检查官方文档。
Redis Persistence Official doc
Redis 作为缓存
是的,Redis 位于 Django 和 RDBMS 之间。
工作原理
given a URL, try finding that page in the cache if the page is in the cache: return the cached page else: generate the page save the generated page in the cache (for next time) return the generated page
Django’s cache framework Official Doc
如何在 Django 中使用 Redis
我们可以在 Django 应用中使用 redis python 客户端redis-py。
Redis python client redis-py Github
我们可以使用 Django-redis 作为 django 缓存后端。
Django-redis 建立在 redis-py 之上,并添加了与 django 应用程序相关的额外功能。
其他库也存在。
Redis 用例和数据类型
一些用例
Top Redis Use Cases by Core Data structure types
使用 Redis 的大型科技公司
Twitter GitHub Weibo Pinterest Snapchat Craigslist Digg StackOverflow Flickr
【讨论】: