Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use redis for cache and session store #617

Merged
merged 1 commit into from
Jul 29, 2024

Conversation

takahashim
Copy link
Collaborator

@takahashim takahashim commented Jul 24, 2024

🎩 What? Why?

これはセッションストアをRedisにする修正ですが、以下の2点を変更しています。

  • キャッシュストアとしてRedisを使うように変更
    • ただし、sidekiqで使ってるはずのREDIS_URLをそのまま使うのではなく、REDIS_CACHE_URLで設定されるRedisを使用します
  • セッションストアとしてキャッシュを使うように変更
    • 別解として「Sidekiqで使うRedis」「キャッシュで使うRedis」「セッションに使うRedis」を全部分けるという選択肢もありますが、そこまでこだわる必要があるかどうか不明だったので2番目と3番目を同一にしています

キャッシュ用のRedisはREDIS_CACHE_URLという環境変数で設定しています。REDIS_URLと同じ値に設定してもよいですし、redis://${ props.cache }:6379/1などと別データベースを指定してもよいかもしれません。
注意点として、セッションに使う場合はEvictionで勝手に既存のセッションを消されたりしないよう十分なサイズを確保する必要があります。

また、開発環境でもREDIS_CACHE_URLが設定されていて、かつtmp/caching-dev.txtが存在する場合にはRedisを使うようになります。
tmp/caching-dev.txtrails dev:cacheでON/OFFがトグルできるようになっています。

📋 Subtasks

  • Add CHANGELOG upgrade notes, if required
  • If there's a new public field, add it to GraphQL API
  • Add documentation regarding the feature
  • Add/modify seeds
  • Add tests
  • Another subtask

@takahashim takahashim marked this pull request as ready for review July 24, 2024 12:35
@ayuki-joto ayuki-joto merged commit bac64d8 into main Jul 29, 2024
2 checks passed
@sion908
Copy link
Contributor

sion908 commented Aug 5, 2024

@takahashim
一点お聞きしたいことがあります
session_storeとして、開発環境でradis_storeを用いたい場合、どのようにすれば良いでしょうか?
docker-composeの差分としては以下のようにしましたが、動いているようには見えなかったです

x-custom:
  ...
  postgres:
    ...
    - &redis_cache_url "${REDIS_CACHE_URL:-'redis://redis:6379/0'}"
services:
  app:
    ...
    environment:
      ...
      REDIS_CACHE_URL: *redis_cache_url
    tty: true
    command: "/bin/bash"
    links:
      - pg
      - redis

  redis:
    image: redis
    ports:
      - 6379:6379
    volumes:
      - redis-data:/data

volumes:
  ...
  redis-data: {}
また、開発環境でも...かつtmp/caching-dev.txtが存在する場合にはRedisを使うようになります。
tmp/caching-dev.txtはrails dev:cacheでON/OFFがトグルできるようになっています。

の部分が足りないのかと思いますが、いまいちやり方が分からず、コンテナ内で
/tmp/caching-dev.txtを作成してみましたが違うようでしたので、やり方をお教えいただけると幸いです。
よろしくお願いいたします。

@takahashim
Copy link
Collaborator Author

あー、確かに今のdocker-compose.ymlではredisをサポートできてないですよね…。
いただいた記載のような形で動きそうに思いますが、こちらでも試してみます。

@takahashim takahashim deleted the use-redis-for-cache-and-session branch August 5, 2024 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants