使用 Redis 与 memcached+db 作为 Django 会话系统的优缺点?

Posted

技术标签:

【中文标题】使用 Redis 与 memcached+db 作为 Django 会话系统的优缺点?【英文标题】:Pros and Cons of using Redis vs memcached+db as Django's session system? 【发布时间】:2014-05-13 04:47:24 【问题描述】:

Django 的内置 cached_db 会话允许我使用 memcached 来存储会话数据,并写入 db 以实现持久性。

虽然一些应用程序使用 redis 作为他们的会话存储(instagram 之一)。

这些解决方案的优缺点是什么?

附言我不是在问 memcached 和 redis 之间的比较,这个问题Memcached vs. Redis? 已经提供了很好的答案。我问的是在会话系统的情况下哪个更好。

【问题讨论】:

【参考方案1】:

在 Memcached 中,当达到内存限制时,即使它们的 ttl 仍然到期,键也会过期。这样,您的一些用户将失去他们的会话。 Redis 默认没有内存限制,所以不会遇到这个问题。但是,您需要管理内存以确保 Redis 始终有足够的内存。您还可以在 Redis 中打开内存限制,使其行为类似于 Memcached(请参阅MAXMEMORY 配置选项)。

也可以看看Cookie-based sessions。

【讨论】:

【参考方案2】:

今天我想说 Redis 是一个更好的选择。它提供了更多开箱即用的功能,例如集群。 它受到广泛支持(即 AWS 上的 ElastiCache),并且有一个很棒的 django-redis 库可用于简单集成。

【讨论】:

以上是关于使用 Redis 与 memcached+db 作为 Django 会话系统的优缺点?的主要内容,如果未能解决你的问题,请参考以下文章

docker和redis先学哪个

键值存储之redis

NoSQL - Redis应用场景

redis和memcached对比

基于(Redis | Memcache)实现分布式互斥锁

如果 redis 已经是堆栈的一部分,为啥 Memcached 仍然与 Redis 一起使用?