我只会用纯正的中文来翻译,所以只提供一个选项:只有那些想要使用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

bannerAds