当前位置:  开发笔记 > 编程语言 > 正文

如何在Django中使用redis?

如何解决《如何在Django中使用redis?》经验,为你挑选了4个好方法。

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

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



1> Spike Gronim..:

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

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


这通常通过为密钥设置TTL来完成:http://redis.io/commands/ttl.如果密钥到期,则必须转到DB.因此,如果密钥是redis,那么您可以使用它.请注意,这种简单的实现会导致一些问题:当一个流行的密钥到期时你有http://en.wikipedia.org/wiki/Thundering_herd_problem,你想使用http://en.wikipedia.org/wiki/Negative_cache,并且您的数据库需要http://en.wikipedia.org/wiki/Admission_control
诚实地缓存模型/响应对象不会过早优化.除非你被指控这样做(比如在heroku上),即使对于小应用程序也不会有任何缓存.
嗯,好吧,a)Redis的设计不仅仅是RAM缓存 - 它是持久的(但包括缓存功能),b)它不仅仅是简单的键值存储 - 有内置操作的列表,哈希集等.

2> Stefan Schub..:

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

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

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


对于我的公司,我们使用Redis存储从Cassandra&Postgres生成的摘要和产品.这些产品的数量(数十亿),需要改变的频率,以及我们永远不知道什么是需要的,这使得它们非常适合redis.此外,一旦你在SQL数据库中超过一百万行,redis可以成为一个很好的免费资源进行成员资格测试(例如,这个实体是否在这个域中?)

3> ostergaard..:

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或结果不是那么有用).



4> Dmitrii Mikh..:

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

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有