Rio Blog

世界のどこかでゆるく生きるITエンジニアのブログ

【OCI】RedisクラスタにPredisで接続する

OCIのRedisクラスタにPredisで接続する際に割とハマったので共有します。

結論としては、下記のようにやるとうまくいきました。

test.php

<?php
require_once "./predis/predis/autoload.php";

// プライマリエンドポイント
$cluster = ['tls://a***-p.redis.ap-tokyo-1.oci.oraclecloud.com:6379'];
// クラスター構成時の必須オプション
$option = ['cluster' => 'redis'];

// インスタンス化
$redis = new \Predis\Client($cluster, $option);

// set, get
$redis->set('foo', 'bar');
$value = $redis->get('foo');

echo $value;

実行と結果

# 実行
$ php test.php

# 結果
foo

ポイントは

  • プライマリエンドポイントに’tls://’と’:6379’をそれぞれつける。
  • オプションで ‘schema’ = ‘tls’ といった指定は不要。
  • AWSのElastiCacheとも若干書き方が異なる。

というあたりです。

おわりに

これでオートスケーリングでサーバーが複数になった場合でも、OCI Redisにアクセスし、セッションを維持するといったことが可能になります。なお、Predisと並んでよく使われるクライントであるPhpRedisでも同じようにできるはずです。