有効期限が切れたときに、ある場所から別の場所にアトミックに移動する方法はありますか?クライアントでは、期限切れの通知を通知することでこれを実行する方法がありますが、通知がトリガーされたときにクライアントが実行されていない場合は、イベントは失われます。有効期限切れのときにredisキーをアトミックに移動
しかし、(LUAスクリプトのような)LUAスクリプトを使用してサーバー上で実行する方法がある場合は、アトミックになり、キーは有効期限の前に1か所に、有効期限の後には他の場所に存在します。
有効期限が切れたときに、ある場所から別の場所にアトミックに移動する方法はありますか?クライアントでは、期限切れの通知を通知することでこれを実行する方法がありますが、通知がトリガーされたときにクライアントが実行されていない場合は、イベントは失われます。有効期限切れのときにredisキーをアトミックに移動
しかし、(LUAスクリプトのような)LUAスクリプトを使用してサーバー上で実行する方法がある場合は、アトミックになり、キーは有効期限の前に1か所に、有効期限の後には他の場所に存在します。
キースペース通知によってLuaスクリプトを起動することはできません。 これはクライアント側で行う必要があります。
キーが期限切れになると、有効期限キースペース通知は発生しません。キーはコマンドによってアクセスされ、期限が切れていることが判明した場合には(see Timing of expired events)
- ...ご想像のとおり起こることを保証しません。
- バックグラウンドで期限切れのキーを探すバックグラウンドシステムを介して、増分的に、 がアクセスされないキーも収集できるようにします。
IMHO、私はあなたが別のアプローチに進むべきだと信じています。いくつかの外部タスクスケジューラを使用してタスクを自動的に開始して、期限切れになる予定の鍵を数秒または数分間移動させてから期限切れにする予定です。 ttl
コマンドを使用してターゲットキーがまだ生存しているかどうかを確認します。
私の場合、キーの有効期限は自動的にメモリを解放するための良いアプローチですが、有効期限イベントに基づいたアクションを生成するために使用するべきではありません。そのようなケースでは信頼できません。