2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ElastiCache(Redis)のインスタンス1つを、複数のLaravelアプリで共有して利用できるか

Last updated at Posted at 2023-06-14

コストを抑えるために、2つの全く関連のないLaravelアプリで、ElastiCacheを利用しようとした際に、
それぞれのアプリで、キーバリューが干渉してしまうのではないかと考え、調べてみたのですが、
思ったよりも時間がかかってしまったので、簡単ですが投稿します!

結論: 問題なさそう!

調査内容

  • stackoverflowに完璧な回答がありました。
    要約すると、Redisに追加する際に、prefixをキーに追加して区別することができそうです。
    Laravel10ではconfig/cache.phpで、デフォルトでAPP_NAMEを埋め込んでくれていました。

//関連部分翻訳
https://laravel.com/docs/5.6/queues#driver-prerequisites が言っています:
redisキュードライバーを使用するには、config/database.php設定ファイルでRedisデータベース接続を構成する必要があります。
そして、https://laravel.com/docs/5.6/redis#predis が言っています:
デフォルトのホスト、ポート、データベース、およびパスワードサーバーの構成オプションに加えて、Predisは、あなたのRedisサーバーごとに定義することができる追加の接続パラメータをサポートしています。これらの追加設定オプションを利用するには、config/database.php設定ファイル内のRedisサーバー設定に追加してください。
connection parameters」ページを読むと、最終的にhttps://github.com/nrk/predis/wiki/Client-Options、「prefix」がサポートされているオプションであると書かれています。

  • また、Laravel10だと、Laravelのconfig/cache.php内にも以下の記述がありました。
    /*
    |--------------------------------------------------------------------------
    | Cache Key Prefix
    |--------------------------------------------------------------------------
    |
    | When utilizing the APC, database, memcached, Redis, or DynamoDB cache
    | stores there might be other applications using the same cache. For
    | that reason, you may prefix every cache key to avoid collisions.
    |
    */

    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),

#和訳
APC、データベース、memcached、Redis、DynamoDBのキャッシュストアを利用する場合、同じキャッシュを利用する他のアプリケーションが存在する可能性があります。そのため、衝突を避けるために、すべてのキャッシュ・キーにプレフィックスを付けることがあります。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?