我们正在尝试使用Redis Cluster来存储会话数据,使用最新版本的phpredis,2.2.5,从github存储库下载到2015年的19 Juin,将redis配置为php.ini configuraiton文件中的会话处理程序。
我们有6个实例,3个作为主服务器,3个作为从服务器,我们测试了存储和读取会话数据的工作原理。
但是,如果我们关闭任何主程序,我们的应用程序会显示以下错误:
Fatal error: Uncaught exception 'RedisException' with message 'Connection closed' in /users/ets01/lib/php/DEIN/class.PSASession.php:64 Stack trace: #0 /users/ets01/lib/php/DEIN/class.PSASession.php(64): session_start() #1 /users/ets01/lib/php/DEIN/class.PSAPage.php(102): PSASession->__construct() #2 /users/ets01/web/inc/class.APP2Page.php(11): PSAPage->__construct('b', 11) #3 /users/ets01/web/html/index.php(11): APP2Page->__construct() #4 {main} thrown in /users/ets01/lib/php/DEIN/class.PSASession.php on line 64
Fatal error: Uncaught exception 'RedisException' with message 'Connection closed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0
连接已关闭,群集无法正常运行,我们希望将该连接重做到另一个实例。
phpredis驱动程序是否管理与群集的连接?它是否自动提供从另一个集群实例获取值的机会?
答案 0 :(得分:0)
我们解决了这些问题: - )
在创建群集时,我们必须使用服务器IP而不是127.0.0.1
redis-trib.rb create --replicas 1 10.68.10.201:7001 10.68.10.201:7002 10.68.10.201:7003 10.68.10.201:7004 10.68.10.201:7005 10.68.10.201:7006
现在,从PHP脚本设置和获取集群中的值是有效的。
另外,对于使用它作为会话处理程序,我们必须使用5.6版本,对于以前的版本,我们有一个“分段错误”错误。