はじめに
以前Flowのキャッシュ機能を試しました。
この時はキャッシュをプロジェクトディレクトリ内に保存するというシンプルなものでしたが、今回はRedis(Valkey)内にキャッシュデータを保存してみようと思います。
FlowでRedisを使う
Flowにおけるキャッシュフレームワークの全体像です。
保存先を変えたい場合、Backendのクラスを変更するだけでOKです。
FlowにはRedisに保存するためのBackendが用意されているので利用しましょう。
phpredisのインストール
まずはpeclでphpredisを入れます。
FlowのRedisBackendはphpredisを使ってRedisの操作をするため、phpredisがないとエラーになります。
以下はDockerファイルでphpredisをインストールする例です。
# ベースイメージ
FROM php:8.5-cli
# phpredisのinstall
RUN pecl install redis && docker-php-ext-enable redis
Caches.yaml
Cache.yamlにはキャッシュ種別ごとに利用するFrontendとBackendのクラスを記載します。
ここを書き換えるだけでredisを利用できます。
接続情報などのoptionもここに記載しましょう。
MyPackage_Cache:
frontend: Neos\Cache\Frontend\StringFrontend
backend: Neos\Cache\Backend\RedisBackend
backendOptions:
defaultLifetime: 0
hostname: valkey
port: 6379
database: 0
動作確認
キャッシュ登録用のAPIを作ったので、これで登録してみます。
public function createCacheAction(String $key, String $value): void
{
// キャッシュにデータを保存
$this->cache->set($key, $value, lifetime: 30);
}
APIを実行したところ、データが無事に格納されていることが確認できました!
127.0.0.1:6379> keys *
1) "f20da2a0f05b3b3902f3afc005596559:MyPackage_Cache:entry:testKey2"
127.0.0.1:6379> ttl f20da2a0f05b3b3902f3afc005596559:MyPackage_Cache:entry:testKey2
(integer) 15
127.0.0.1:6379> get f20da2a0f05b3b3902f3afc005596559:MyPackage_Cache:entry:testKey2
"va"
おわりに
今回はFlowでredisにキャッシュを保存する方法を試してみました。
標準機能も利用でき、特に苦労なくRedisに切りけることができました。
今度は独自のキャッシュBackendなども作ってみようと思います。
ここまでご覧いただきありがとうございました!
