如何在Django中使用Redis?
我听说过redis-cache,但它到底是怎么工作的呢?它是作为Django和我的关系数据库之间的一层,来缓存关系数据库的查询吗?
还是说它应该直接用作数据库?我对此有些怀疑,因为那个GitHub页面没有提供任何登录信息,也没有设置说明,只是告诉你要设置一些配置属性。
5 个回答
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上配置最大内存,否则结果就没那么有用了)。
虽然Redis是把数据存储在内存里的,但这并不意味着它只能用作缓存。我见过有人把它当作持久化的数据存储。
它可以用作缓存,说明它在高性能存储方面很有用。不过,如果你的Redis系统出现故障,可能会丢失那些还没有写回硬盘的数据。为了减少这种风险,有一些方法,比如使用热备份副本。
如果你的数据非常重要,比如你在经营银行或商店,Redis可能不是最好的选择。但如果你在开发一个流量很大的游戏,或者一些社交互动的应用,并且你能接受一定程度的数据丢失,那么Redis可能值得考虑。
总之,Redis确实可以用作数据库。
这个Python模块用于Redis,在它的说明文件里有一个很清晰的使用示例,你可以查看:http://github.com/andymccurdy/redis-py
Redis是一个专门用来做内存缓存的工具。它支持基本的获取(GET)和设置(SET)键值对,还可以存储一些集合,比如字典。你可以把数据库查询的结果存到Redis里,这样可以加快你的网站速度,特别是用Django做的网站。在你真的需要提高速度之前,不要急着使用Redis或者其他缓存工具,避免过早优化。