
データベース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...EX
。EXPIRE