如何在Django中使用Redis?

112 投票
5 回答
79460 浏览
提问于 2025-04-16 04:38

我听说过redis-cache,但它到底是怎么工作的呢?它是作为Django和我的关系数据库之间的一层,来缓存关系数据库的查询吗?

还是说它应该直接用作数据库?我对此有些怀疑,因为那个GitHub页面没有提供任何登录信息,也没有设置说明,只是告诉你要设置一些配置属性。

5 个回答

24

Redis基本上是一个“内存中”的键值存储,功能非常多。它非常灵活。你可以把它当作临时存储,比如缓存,也可以当作永久存储,比如数据库(不过有些注意事项在其他回答中提到过)。

当Redis和Django结合使用时,最常见的用法可能就是用来缓存“响应”和会话信息。

这里有一个后端的链接 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上配置最大内存,否则结果就没那么有用了)。

62

虽然Redis是把数据存储在内存里的,但这并不意味着它只能用作缓存。我见过有人把它当作持久化的数据存储。

它可以用作缓存,说明它在高性能存储方面很有用。不过,如果你的Redis系统出现故障,可能会丢失那些还没有写回硬盘的数据。为了减少这种风险,有一些方法,比如使用热备份副本。

如果你的数据非常重要,比如你在经营银行或商店,Redis可能不是最好的选择。但如果你在开发一个流量很大的游戏,或者一些社交互动的应用,并且你能接受一定程度的数据丢失,那么Redis可能值得考虑。

总之,Redis确实可以用作数据库。

80

这个Python模块用于Redis,在它的说明文件里有一个很清晰的使用示例,你可以查看:http://github.com/andymccurdy/redis-py

Redis是一个专门用来做内存缓存的工具。它支持基本的获取(GET)和设置(SET)键值对,还可以存储一些集合,比如字典。你可以把数据库查询的结果存到Redis里,这样可以加快你的网站速度,特别是用Django做的网站。在你真的需要提高速度之前,不要急着使用Redis或者其他缓存工具,避免过早优化。

撰写回答