在 django db + 基于缓存的会话上使用 django 签名的 cookie 会话的性能比较?
Posted
技术标签:
【中文标题】在 django db + 基于缓存的会话上使用 django 签名的 cookie 会话的性能比较?【英文标题】:Performance comparison of using django signed cookie session over django db + cache based session? 【发布时间】:2012-08-21 22:41:44 【问题描述】:Django 1.4 提供了几种维护django sessions 的方法:
我对使用的看法:
i) 仅缓存:不太可取,用户会话可能会从内存缓存中清除。
ii) Db + 缓存 (cached_db
):首选、简单且安全的解决方案。
iii) 签名的 cookie 会话:首选,没有数据库命中。
假设会话数据非常小,即在 cookie 中存储它没有问题。在数据库 + 内存缓存驱动的会话引擎上使用签名 cookie 是否有任何性能优势?对于 N 个并发新用户,将保存 N 个数据库命中的顺序。这将减少数据库服务器在单位时间内必须处理的总查询数。
更新:我们发现 redis 或 aerospike 是 django 真正强大且高吞吐量的会话后端。我们使用redis
作为会话
后台
【问题讨论】:
【参考方案1】:您必须能够处理 N 个并发查询(N - 并发新 用户)。
您只能在非常大的范围内看到差异。您必须是悲观主义者(服务器宕机、备份不良、amazon bancrupcy),并且您的数据库必须能够在高峰时段处理所有用户。
使用 cookie 会话的 10 000 000 名用户将额外花费 0 美元,iframe 和手机问题 10 000 000 个用户使用缓存会话每天将花费您数百或不到数百美元,如果重启会丢失会话 使用 cache_db 会话的 10 000 000 个用户每天将花费您数千美元(任何能够一次处理 1000 000 次点击的持久存储,10% 的用户)我使用 redis 后端(定期保存到磁盘),可以切换到 memcached 服务集群。
http://www.icis.com/blogs/icis-chemicals-confidential/files/2011/10/19/goodcheapfast.jpg
【讨论】:
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
会话数据存储在哪里?以上是关于在 django db + 基于缓存的会话上使用 django 签名的 cookie 会话的性能比较?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Redis 与 memcached+db 作为 Django 会话系统的优缺点?
Django + JSON Web 令牌 + 禁用基于会话的授权