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

Dhr*_*hak 12 django session django-sessions

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

我对使用的看法:

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

ii)Db + cache(cached_db):优选,简单和安全的解决方案.

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

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

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

bak*_*048 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