我可以使用cassandra(2.0.3)作为php会话存储(例如vs redis)吗


Can I use cassandra (2.0.3) as a php session store (eg. vs redis)?

我已经在谷歌上搜索了好几天,读了一些卡桑德拉的书。但是我还没有得到答案。在我们将时间投入到redis或riak集群中进行php会话存储之前,我们想对此进行更多的评估。

我们的用户在地理上被重定向到3个数据中心(美国、欧盟、亚洲),我们在所有3个位置运行多数据中心cassandra。

对我们来说,最好和最高效的是能够使用Cassandra作为会话存储,这样我们就不必维护另一个集群。我们不介意用户因为被重定向到不同的数据中心而不得不重新登录,但我们希望尽可能减少这种情况。

那么在我们的场景中,cassandra作为php会话存储在技术上是一个不错的选择吗?如果是,那么在卡桑德拉最好的做法是什么?我们覆盖了php。

谢谢!

Cassandra可能是一个不错的会话存储。然而,请注意Cassandra最终的一致设计,并相应地选择您的阅读设置。例如,如果使用默认的复制因子3,那么在执行下一个读取请求之前,写入可能不会完全复制(到其他2个节点)。如果您的读取一致性级别为1(最快读取性能),则可能会从尚未接收到最新写入的节点取回旧数据。我建议使用QUORUM或更高的读取一致性来避免这个问题——性能会比级别1低一点,但在这种情况下可能需要进行权衡。

PHP支持开箱即用的会话的各种方法-磁盘、memcached和其他一些方法。猜测Cassandra不是其中之一,但你可以很容易地实现自己的会话存储-请参阅本页了解解释-http://php.net/session.customhandler

你必须实现一组方法并告诉PHP它们,或者在较新的版本上,有一个接口可以实现——它更好/更干净!