使用django signed cookie会话而不是基于django db + cache的会话的性能比较?

时间:2012-08-27 12:33:23

标签: django session django-sessions

Django 1.4提供了几种维护django sessions的方法:

我对使用的看法:

i)仅限缓存:不可取,用户会话可能会从memcache中清除。

ii)Db +缓存(cached_db):优先,简单且安全的解决方案。

iii)签名的cookie会话:优先,没有数据库命中。

假设会话数据非常小,即将其存储在cookie中没有问题。在数据库+ memcache驱动的会话引擎上使用签名cookie是否有任何性能优势?对于N个并发新用户,将保存N个数据库命中的顺序。这将减少数据库服务器每单位时间必须处理的总查询。

更新:我们发现redis或aerospike是django真正强大且高吞吐量的会话后端。我们使用redis作为会话 后端

1 个答案:

答案 0 :(得分:5)

  

您必须能够处理N个并发查询(N - 并发新查询)   用户)。

您只能看到非常大的比例的差异。你必须是悲观主义者(服务器崩溃,糟糕的破坏,亚马逊保护),你的数据库必须能够在高峰时间处理所有用户。

  • 使用Cookie会话的10 000 000名用户将花费您额外的0美元,iframe和移动设备的问题
  • 拥有缓存会话的10 000 000名用户每天将花费数百或不到数百美元,重启时会丢失会话
  • 拥有cache_db会话的10 000 000名用户每天将花费数千美元(任何持久存储一次能够处理1 000 000次点击,10%的用户)

我使用redis后端(定期保存到磁盘),可以切换到一组memcached服务。

http://www.icis.com/blogs/icis-chemicals-confidential/files/2011/10/19/goodcheapfast.jpg

相关问题