30日間非アクティブであったRedisキーの削除

30日間非アクティブであったRedisキーの削除

データベースscrumblrとして使用されるWebアプリケーションをインストールしました。redis

私がやろうとしているのは、30日間非アクティブであるか、30日間アクセスされなかったすべてのキーを削除することです。

私は走った

redis-cli KEYS*

すべてのキーを返しますが、タイムスタンプは表示しません。

すべての非アクティブキーを見つけて削除するスクリプトまたはコマンドは、毎日特定の時間に実行できますか?

答え1

使用できるオブジェクトアイドル時間指定されたキーに格納されているオブジェクトがアイドル状態(読み取りまたは書き込み操作で要求されていない)からの秒数を返すコマンドです。

サンプルコードは次のとおりです。

#!/bin/sh

redis-cli -p 6379 keys "*" | while read LINE ;
do
val=`redis-cli -p 6379 object idletime $LINE`;
if [ $val -gt $((30 * 24 * 60 * 60)) ];
then
  echo "$LINE";
  # del=`redis-cli -p 6379 del $LINE`;  # be careful with del
  # echo $del;
fi
done;

状況に応じて、次のようredis-cli -p 6379に置き換えることができます。

redis-cli -h redis_host -p redis_port -a redis_password

答え2

短い答え:いいえ。

長い答え:キーを繰り返すことができます(KEYS出力は -本番環境ではこのコマンドを使用しないでください。) を使用すると、SCAN各キーに対してコマンドが呼び出され、OBJECT IDLETIME応答に従って削除されます。

より長い答え:実際にscrumprを変更することができます源泉Redisに30日後に自動的にキーが期限切れになるようにします。疑わしいファイルは で見えるがlib/data/redis.js、パッチは(部屋、ボード、カード)書いた後、各キーに or 命令だけを使用すればよい問題のようですSET...EXEXPIRE

関連情報