我只会用纯正的中文来翻译,所以只提供一个选项:只有那些想要使用Redis集群而不是Redis来管理PHP的SESSION的人才会被私下告知
是的,抱歉标题有些夸张。
这是关于在PHP的SESSION管理中指定Redis Cluster的方法。
这是我们的环境。
我们使用Redis 3.0.5、phpredis、apache 2.2.15。
指定Redis Cluster
要直接在PHP中指定的话,可以这样写。
ini_set('session.save_handler', 'rediscluster');
ini_set('session.save_path', 'seed[]=192.168.1.100:6379&seed[]=192.168.1.110:6379&seed[]=192.168.1.120:6379&timeout=3&read_timeout=3&failover=error');
要在Apache的扩展中进行编写的话,大致是这样的。
extension = redis.so
session.save_handler = rediscluster
session.save_path = 'seed[]=192.168.1.100:6379&seed[]=192.168.1.110:6379&seed[]=192.168.1.120:6379&timeout=3&read_timeout=3&failover=error'
(额外信息)指定使用 Redis
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379');
extension = redis.so
session.save_handler = redis
session.save_path = "tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379"
顺便提一下,如果在 Redis Cluster 中将 Redis 指定为 PHP Session,则会出现以下错误。
[06-Apr-2016 16:48:04 Asia/Tokyo] PHP Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (tcp://127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003
can you please provide more context or information for “参考URL” so that I can give a better paraphrase?
https://github.com/phpredis/phpredis/issues/620
https://github.com/phpredis/phpredis/issues/664