2012-12-01 46 views
3

我的顾问接管了一个相当忙碌的Django应用程序,该应用程序通过Redis EXCEPT处理缓存,用于处理Django.session数据。唯一可用的信息是提交消息,如“通过Redis恢复会话存储”。Django会话数据&Redis作为后端

我已经测试了存储在Redis中的Django会话,它看起来像一个很好的修复程序,但我很犹豫如何将它推下管道,因为我想知道为什么原始开发人员将其拉下。

正如我所了解的Django会话逻辑,它只是一个key:value store,其中value是一个带有相关会话数据的pickled Python对象。

短版:

什么是使用Redis的处理Django.session数据的缺点?

+1

我能想到的唯一不足就是会议不再是永久性的。但是谁仍然需要呢? – freakish

+1

我也相信使用redis没有缺点。无论如何,在你的项目中,它只是一个非常快速的缓存后端。我会使用django.contrib.sessions.backends.cached_db会话后端将会话数据保存在数据库中。 – ppetrid

+0

@freakish这可能是问题所在,涉及的产品是一个自定义的电子商务网站,它做了一些奇怪的事情,特别是购物车的id在会话中持有(所以当客户IP被转移或某些会话刷新时会消失饼干)。 – David

回答

6

Redis是存储会话而不是将它们添加到SQL数据库中的快速而快速的方式(尝试监视查询会话表所用的时间),如果使用某种工具(如django-toolbar)应用程序。

另一方面,唯一可能显示为问题的是会话数据持久性,这已在Redis中以两种不同方法处理完毕,您可以根据需要选择适合您的需求,请参阅文档以获取更多详细信息,以及制作群集或故障转移Redis服务器的选项。

我遇到过类似的情况,为了速度和其他项目相关的原因,我需要将会话存储在NoSQL数据库中,这发生在我使用django-redisession应用程序时,我建议尝试一下。

最后,关于您一直在谈论的购物卡问题,这绝对与Redis无关,请检查您的系统配置以及不同软件组件之间的交互方式。我还建议在一台副本服务器上进行测试,这些副本服务器是在生产服务器上进行的,以确保一切正常工作并且配置合理。

更新

顺便说一句,使用#1对Redis的会话处理,这是使用这样的NoSQL数据库作为后端的会话管理的一个非常强大的例子。

相关问题