【发布时间】:2018-09-24 22:17:20
【问题描述】:
在 Python/Django 应用程序中,检索存储在 redis 中的值是否比检索存储在 request.session 字典中的值慢?
背景:
我有一个 Django 应用程序,我在其中使用基于数据库的会话。也就是说,我没有使用django.contrib.sessions,而是使用了这个漂亮的小3rd party library。
我最近运行了一个基准测试,通过redis-py wrapper(即my_server.set('test','1'))在本地redis 实例中保存了一个测试值。我在request.session['test'] 中保存了相同的测试值。
然后我从每个中检索测试值,并比较所用时间。 request.session 在这种情况下,redis 的性能超过了 2 倍。
问题: 该应用程序不以任何方式分发,所有内容都是共享的,并且发生在同一台机器上 - 非常普通的设置。
结果对我来说似乎违反直觉。为什么?因为我的会话是基于数据库的,而且我认为 redis 会比 Django 提供的更快。很明显,我错了。
专家能否解释一下这里的实际情况?也许 redis 核心 API 上的 python 包装器正在减慢速度?
如果您需要更多信息,或者对我如何运行基准测试持怀疑态度,请询问。
附:我只是将这两种竞争方式放在一个 for 循环中进行 10 万次迭代,并测量完成所需的时间。
【问题讨论】: