サーバーをいじりながら、WordPressの裏側でオブジェクトキャッシュをストアしてるRedisにTCPで接続してることに気づいた。WordPress…というか、php-fpmとRedisは同じサーバーで動いてるのになんでunix socketじゃないんだ。…というわけで、unix socketでの接続にしてみることにした。

今のところ、php-fpmを動かしてるユーザーと、Redisを動かしているユーザーは別。unix socketにするとなると、パーミッションをどうするのか考えなきゃならんな、と。777にしようかとも思ったけど、だいたいろくなことにならないような気もして、Redisユーザーのグループに対して読み書き権限を設定して、php-fpmを動かしているユーザーをそのグループに突っ込むことにした。

まず、Redisの設定を変更した。

redisの設定ファイルに以下の内容を追記して、socketのパスとパーミッションを指定。

unixsocket [redisのsocketのpath]
unixsocketperm 770

その後、Redisを再起動したら、Redisのログにsocketが使えるようになった旨の出力があった。

で、次にphp-fpmを動かしているユーザーをRedisのユーザーが所属するグループに追加。

sudo usermod -aG [redisを動かしているユーザーが所属するグループ] [php-fpmを動かしているユーザー]

まぁ、これでphp-fpmからRedisにunix socketで接続できるようになったはず。

WordPressでは、オブジェクトキャッシュをRedisにストアするプラグインとして、Redis Object Cacheを使っているので、プラグインに対してsocketのパスを設定した。wp-config.phpに定数でパラメーターを設定するようだ。

define(‘WP_REDIS_CLIENT’, ‘pecl’);
define(‘WP_REDIS_SCHEME’, ‘unix’);
define(‘WP_REDIS_PATH’, ‘[redisのsocketのpath]’);

さて、Redisにunix socketで接続するように切り替えてみて、めちゃくちゃ早くなった感じもしないが、気分的には多少速くなった気が…しないでもない。

一応、How fast is Redis?How fast is Redis?を眺めてみると、

Depending on the platform, unix domain sockets can achieve around 50% more throughput than the TCP/IP loopback (on Linux for instance).

ってことのようで。