如何在Django中使用redis?

时间:2010-09-27 05:48:42

标签: python django redis

我听说过redis-cache但它究竟是如何工作的?它是否被用作django和我的rdbms之间的层,通过某种方式缓存rdbms查询?

或者是否应该直接用作数据库?我怀疑,因为那个github页面没有涵盖任何登录细节,没有设置..只是告诉你设置一些配置属性。

5 个答案:

答案 0 :(得分:68)

Redis的这个Python模块在自述文件中有一个明确的用法示例:http://github.com/andymccurdy/redis-py

Redis旨在成为RAM缓存。它支持基本的GET和SET键以及存储集合(如字典)。您可以通过将其输出存储在Redis中来缓存RDBMS查询。目标是加速你的Django网站。在您需要速度之前不要开始使用Redis或任何其他缓存 - 不要过早优化。

答案 1 :(得分:59)

仅仅因为Redis将内存存储在内存中并不意味着它应该是一个缓存。我见过人们将它用作数据的持久存储。

它可以用作缓存,这暗示它可以用作高性能存储。如果您的Redis系统出现故障,您可能会丢失未再次写回磁盘的数据。有一些方法可以减轻这种危险,例如:一个热备份副本。 如果您的数据是“关键任务”,就像您经营银行或商店一样,Redis可能不是您的最佳选择。但是如果你用持久的实时数据或一些社交互动的东西写一个高流量的游戏并管理数据丢失的概率是完全可以接受的,那么Redis可能值得一看。

无论如何,重点仍然是,是的,Redis可以用作数据库。

答案 2 :(得分:20)

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或结果不太有用)。

答案 3 :(得分:4)

您还可以将Redis用作Django应用程序中分布式任务的队列。您可以将其用作CeleryPython RQ的消息代理。

答案 4 :(得分:2)

Redis作为主数据库

是的,您可以将Redis键值存储用作主数据库。 Redis不仅存储键值对,而且还支持不同的数据结构,例如

  1. 列表
  2. 设置
  3. 排序集
  4. 哈希
  5. 位图
  6. 超级日志

Redis Data types Official doc

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

我们可以将redis python客户端 redis-py 用于Django应用程序。

Redis python client redis-py Github

我们可以将 Django-redis 用于Django缓存后端。

Django-redis 建立在 redis-py 之上,并添加了与Django应用程序相关的其他功能。

Django-redis doc Github

还存在其他库。


Redis用例和数据类型

一些用例

  • 会话缓存
  • 实时分析
  • 网络缓存
  • 排行榜

Top Redis Use Cases by Core Data structure types


使用Redis的大型科技公司

 Twitter GitHub Weibo Pinterest Snapchat Craigslist Digg StackOverflow Flickr