2017-09-28 22 views
0

私はSpring Redisリポジトリを使用していますが、私は削除操作とファントムキーに困惑しています。redisからキー/値を削除する - ファントムキーが削除されない

削除が実行されると、ファントムキーは削除されません。通常の動作ですか?もしそうであれば、元のキーがコードから削除されたときに、ファントムキーの削除を強制することが可能であるかどうか。

元のキーと関連するファントムキーが削除によって削除されることが予想されました。

私はtimeToLive機能を使用して、アプリケーションによって削除されないキーがしばらく時間切れになるようにする予定でした。心配ドメインオブジェクト

@RedisHash(value = "requestContext", timeToLive = 9000) 

削除に設定

注釈がこのように実行されます。あなたの助けを事前に

repository.delete(id) 

ありがとうございます。

答えて

0

Redisからキー/値を削除すると、ファントムキーがすぐに削除されません。 スプリングデータRedisは、他の機能と共に二次インデックスを管理するファントムキーを管理します。 SpringデータRedisは元のハッシュのコピーをわずかに長いTTL(5分)の仮想ハッシュとして保持します。つまり、:ファントムレディスのTTLは、通常のキーTTLより5分多くなります。 元のハッシュが満了すると、スプリングデータのRedis等、このような二次インデックスから参照を除去するようにクリーンアップを実行するためにファントムハッシュをロード 詳しく読む:Redis key Expirations

満了が正の値に設定されている場合に応じたコマンドを期限切れ実行される。オリジナルを保持することに加えて、ファントムコピーはレディスで永続化され、元のコピーの5分後に期限切れになるように設定されます。これは、元の値がすでに消えていても、キーが期限切れになるたびにリポジトリサポートがSpring ApplicationEventPublisherを介して期限切れの値を保持しているRedisKeyExpiredEventを公開できるようにするためです。 Expireyイベントは、Spring Data Redisリポジトリを使用して接続されたすべてのアプリケーションで受信されます。

関連する問題