【发布时间】:2012-12-01 21:49:27
【问题描述】:
我的顾问接管了一个相当繁忙的 Django 应用程序,该应用程序通过 Redis 处理缓存,但 Django.session 数据除外。唯一可用的信息是诸如“Reverting session storage via Redis”之类的提交消息。
我已经测试了存储在 Redis 中的 Django 会话,这似乎是一个不错的解决方案,但我很犹豫是否将其推送到管道中,因为我想知道为什么最初的开发人员会取消它。
据我了解 Django 会话逻辑,它只是一个 key:value 存储,其中 value 是带有相关会话数据的腌制 Python 对象。
短版:
使用 Redis 处理 Django.session 数据有什么缺点?
【问题讨论】:
-
我能想到的唯一缺点是会话不再是永久性的。但是谁需要它呢?
-
我也相信使用 redis 没有缺点。无论如何,在您的项目的上下文中,它只是一个非常快速的缓存后端。我也会使用 django.contrib.sessions.backends.cached_db 会话后端将会话数据保存在数据库中。
-
@freakish 这可能是问题所在,所涉及的产品是一个自定义电子商务网站,做了一些奇怪的事情,特别是购物车的 id 是在会话中保存的(所以当客户 IP 的时候它会消失转移或某些东西清除了会话 cookie)。
-
@freakish 暂时打开 redis 进行会话存储,几个小时后,我收到了一波客户投诉,说他们的购物车不见了。似乎过去的开发人员以某种方式错误配置了 Redis,认为它是一个过分夸大的内存缓存。
-
@David 我怀疑这是 Redis 本身的问题。那里没有太多要配置的东西。您的应用程序中肯定存在错误(或错误的设计)。
标签: django redis session-storage