我正在尝试做一些研究,以便在多服务器环境中找到会话管理的最佳选择,并且想知道人们发现了什么成功以及为什么。赞成与反对。
RDBMS -更慢。更好地用于其他数据。
Memcached -您无法在关闭memcached服务器的同时不丢失会话
Redis -修复了memcached的问题,但是易伸缩性呢?容错?
Cassandra -具有良好的容错性。赞成与反对?
MongoDB,其他的?
谢谢!
发布于 2011-12-20 16:41:17
就个人而言,我使用Cassandra来持久化php会话数据。它使用session_id:{session_data_as_json}将其存储在单行的单列中,并且我在该列上设置了TTL,以便它自动执行垃圾清理。这是一种享受。
我选择了cassandra,因为它已经有了所有其他用户数据……对于缓存,我在所有前端had服务器上启用了APC,并且没有任何问题……
这是最好的方法吗?不确定。它适合于我需要满足的环境、技术和业务规则。..。
附注,我确实开始了一个原生php -> cassandra会话处理程序:https://github.com/sdolgy/php-cassandra-sessions --这展示了如何使用PHPCassa和Cassandra设置TTL
发布于 2011-12-21 00:57:49
memcached Redis -修复了memcached的问题,但是
的易伸缩性呢?容错?
Redis支持replication,即将到来的Redis也应该支持跨多个节点的数据分片。
发布于 2015-10-14 01:26:14
有点晚了,但也许有人对后续感兴趣。我们使用Cassandra作为我们的会话存储,并通过spring-session访问它(使用一个自制的spring- session -cassandra插件)。会话中的对象通过Kryo ( https://github.com/EsotericSoftware/kryo )进行编组/解组。
此设置为我们提供了1到2毫秒之间的会话get和不到1毫秒的存储:
但是,根据环负载的不同,响应时间中存在一些异常值:
https://stackoverflow.com/questions/8570659
复制相似问题