什么用于会话管理?

时间:2011-12-20 04:03:47

标签: session nosql memcached redis cassandra

我正在尝试进行一些研究,以便在多服务器环境中找到会话管理的最佳选择,并且想知道人们找到了哪些成功以及为什么成功。优点和缺点。

RDBMS - 更慢。更好地用于其他数据。

Memcached - 你不能在不丢失会话的情况下删除memcached服务器

Redis - 修复了memcached的问题,但是可扩展性的简易性呢?容错?

Cassandra - 具有良好的容错能力。优点和缺点?

MongoDB,其他人?

谢谢!

3 个答案:

答案 0 :(得分:8)

就个人而言,我使用Cassandra来保存php会话数据。它使用session_id:{session_data_as_json}将它存储在单行的单个列中,并在列上设置TTL,以便自动执行垃圾清理。工作一种享受。

我选择了cassandra,因为它已拥有所有其他用户数据...对于缓存,我在所有前端Web服务器上启用了APC并且没有任何问题......

这是最好的方法吗?不确定。它适合我需要实现的环境,技术和业务规则。 ......

旁注,我确实开始使用本机php - > cassandra会话处理程序:https://github.com/sdolgy/php-cassandra-sessions - 这显示了如何使用PHPCassa和Cassandra设置TTL

答案 1 :(得分:5)

  

Redis - 修复了memcached的问题,但是如何轻松实现   可扩展性?容错?

Redis支持replication,即将推出的cluster也应支持跨多个节点分片数据。

答案 2 :(得分:0)

有点晚了,但也许有人对跟进感兴趣。我们使用Cassandra作为我们的会话商店,并通过spring-session(使用自己开发的spring-session-cassandra插件)访问它。会话中的对象通过Kryo(https://github.com/EsotericSoftware/kryo)编组/解组。

此设置为我们提供1到2毫秒的会话和1毫秒以下的保存:

enter image description here

enter image description here

但是根据环负载,响应时间中存在一些异常值:

enter image description here