データベースとしてscrumblr
を使用するredis
というWebアプリをインストールしました。
私がしようとしていることは、30日間非アクティブであるか、30日間アクセスされていないすべてのキーを削除することです。
私は走った
redis-cli KEYS*
タイムスタンプは表示されませんが、すべてのキーが返されます。
毎日特定の時間に実行できるスクリプトまたはコマンドはありますか?これは、すべての非アクティブなキーを探し、それらを削除しますか?
OBJECT IDLETIME コマンドを利用できます。このコマンドは、指定されたキーに格納されているオブジェクトがアイドル状態であるため(読み取りまたは書き込み操作によって要求されていない)からの秒数を返します。
次のコード例:
#!/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
短い答え:いいえ。
長い答え:キーを反復処理できます(KEYS
の出力-本番環境ではそのコマンドを使用しないでください!SCAN
の代わりに)、各キーに対してOBJECT IDLETIME
コマンドを呼び出し、応答に基づいて削除します。
より長い答え:実際にscrumplrの source を変更して、Redisが30日後に自動的にキーを期限切れにするようにすることができます。疑わしいファイルはlib/data/redis.js
であるように見え、パッチは(部屋、ボード、カード)に書き込まれた後、各キーに対してSET...EX
またはEXPIRE
コマンドを使用するだけで済みます。