我听说过redis-cache但它究竟是如何工作的?它是否被用作django和我的rdbms之间的层,通过某种方式缓存rdbms查询?
或者它应该直接用作数据库?我怀疑,因为那个github页面没有涵盖任何登录细节,没有设置..只是告诉你设置一些配置属性.
这个Redis的Python模块在自述文件中有一个明确的用法示例:http://github.com/andymccurdy/redis-py
Redis被设计为RAM缓存.它支持基本的GET和SET键以及存储集合(如字典).您可以通过将其输出存储在Redis中来缓存RDBMS查询.目标是加速你的Django网站.在您需要速度之前不要开始使用Redis或任何其他缓存 - 不要过早地优化.
仅仅因为Redis将内存存储在内存中并不意味着它应该是一个缓存.我见过人们将它用作数据的持久存储.
它可以用作缓存,暗示它可以作为高性能存储使用.如果您的Redis系统出现故障,您可能会丢失未再次写回磁盘的数据.有一些方法可以减轻这种危险,例如热备份副本.如果您的数据是"关键任务",就像您经营银行或商店一样,Redis可能不是您的最佳选择.但是如果你用持久的实时数据或一些社交互动的东西写一个高流量的游戏并管理数据丢失的概率是完全可以接受的,那么Redis可能值得一看.
无论如何,重点仍然是,是的,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用作Django应用程序中分布式任务的队列。您可以将其用作Celery或Python RQ的消息代理。