12

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

我对使用的看法:

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

ii) Db + cache ( cached_db):优选、简单且安全的解决方案。

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

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

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

4

1 回答 1

5

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

您只能在非常大的范围内看到差异。你必须是悲观主义者(服务器宕机、备份不良、amazon bancrupcy),并且你的数据库必须能够在高峰时间处理所有用户。

  • 使用 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

于 2012-08-27T14:24:59.643 回答