在Django中使用Redis与memcached+db作为会话系统的利弊?
Django自带的cached_db会话功能让我可以使用memcached来存储会话数据,同时也能写入数据库以确保数据持久保存。
而有些应用,比如Instagram,则使用redis作为它们的会话存储。
那么,这两种方案各自的优缺点是什么呢?
补充说明:我并不是在问memcached和redis之间的比较,这个问题Memcached vs. Redis?已经有很好的答案。我想知道在会话系统的情况下,哪种更好。
2 个回答
0
今天我觉得Redis是个更好的选择。它提供了一些额外的功能,比如集群支持。Redis得到了广泛的支持(比如在AWS上有ElastiCache),而且有一个很棒的django-redis库,可以让你轻松地把它和Django框架结合起来。
2
在Memcached中,当内存达到限制时,键会过期,即使它们的有效时间还没到。这意味着一些用户的会话可能会丢失。而在Redis中,默认情况下没有内存限制,所以你不会遇到这个问题。不过,你还是需要管理好内存,确保Redis始终有足够的内存可用。你也可以在Redis中开启内存限制,这样它的行为就会像Memcached一样(可以查看MAXMEMORY
配置选项)。
另外,可以看看基于Cookie的会话。