LoginSignup
7
6

More than 5 years have passed since last update.

PHPのSESSION管理はRedisではなくRedis Clusterを使いたいという方にだけこっそり教えます

Last updated at Posted at 2016-05-02

はい。。大げさなタイトルですみません。
PHPのSESSION管理でRedis Clusterを指定したい場合の方法です。

環境はこちら。
redis 3.0.5、phpredis、apache 2.2.15

Redis Cluster を指定する

phpで直接指定するにはこんな感じ。

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.ini
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 を指定する

php
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379');
redis.ini
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

参考URL

https://github.com/phpredis/phpredis/issues/620
https://github.com/phpredis/phpredis/issues/664

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6