Help us understand the problem. What is going on with this article?

Re:dashのキャッシュデータを削除する

More than 1 year has passed since last update.

最近、Re:dashをちょくちょく使っています。
キャッシュ関連で気になったことがあったのでメモ。

Re:dashはクエリを毎回発行しなくてもいいように、結果をローカルのPostgreSQLにキャッシュして利用している。
長期運用してたり、リアルタイムにクエリを発行するようなSQLを書いてるとキャッシュが溜まっていってしまい、ディスクを圧迫していったので、この辺の問題を解決したいなと思って調べたら環境変数で設定できるようでした。

普段はdockerで立ち上げてるので、docker-composeに環境変数を書いていきます

docker-compose.ymlは公式のものからREDASH_QUERY_RESULT_CLEANUPの3つを追記しただけです。
ここで気をつけないといけないのは、実際にキャッシュを削除しているのはworkerなので、workerのところに書いてあげないといけません。serverのところに書いちゃうと動きません。

  worker:
    build: .
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
      REDASH_QUERY_RESULTS_CLEANUP_ENABLED: "true"
      REDASH_QUERY_RESULTS_CLEANUP_COUNT: 150
      REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE: 1
  • REDASH_QUERY_RESULTS_CLEANUP_ENABLED
    • キャッシュの削除を有効にするかどうか設定(defaultはfalse)
  • REDASH_QUERY_RESULTS_CLEANUP_COUNT
    • 古いキャッシュを何件ずつ削除するかを設定
  • REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE
    • 過去何日経ったキャッシュを削除するかを設定

今回、僕がdocker-composeに書いた設定だと
1日前のキャッシュを150件ずつ削除するようになっています。

実際にどこで消しているのか?

worker.py - GetRedash/redash でworkerが5分置きにredash.tasks.cleanup_query_resultsを叩くようになっている。
つまり、1日前のキャッシュを5分おきに150件消すようになっていて
10分で300件消すことになる。

で、実際のタスクはここ cleanup_query_results() - GetRedash/redash

cleanup_query_resultの中身まではまだ読めてないけど、
5分おきにworkerがキャッシュを消してるのが分かったので良かった。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away