0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHPフレームワークFlow】キャッシュをRedisに保存する

0
Posted at

はじめに

以前Flowのキャッシュ機能を試しました。

この時はキャッシュをプロジェクトディレクトリ内に保存するというシンプルなものでしたが、今回はRedis(Valkey)内にキャッシュデータを保存してみようと思います。

FlowでRedisを使う

Flowにおけるキャッシュフレームワークの全体像です。
保存先を変えたい場合、Backendのクラスを変更するだけでOKです。
FlowにはRedisに保存するためのBackendが用意されているので利用しましょう。

image.png

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なども作ってみようと思います。

ここまでご覧いただきありがとうございました!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?