コンピュータのメモリは限られており、大きいほど高価です。ハードディスクGGを使用する場合、Redisの高い同時実行性と高いパフォーマンスはすべてメモリに基づいています。
期限切れのキーを処理する方法は?
期限切れのキーキャッシュは期限切れになりますが、サーバーのメモリは引き続き使用されます。これは、
redisの2つの削除戦略が2つの戦略に基づいているためです。
1.(アクティブ)定期的に削除する
期限切れのキーを定期的かつランダムにチェックし、期限切れの場合はクリーンアップして削除します。(1秒あたりのチェック数はredis.confのhzで構成されます)
2.(パッシブ)遅延削除
クライアントが期限切れのキーを要求すると、redisはキーが期限切れかどうかを確認し、期限切れの場合は削除してからnilを返します。この種の戦略は友好的であり、それほど多くの損失はありませんが、メモリ使用量は比較的高くなります。
したがって、キーの有効期限が切れていても、redisによってクリーンアップされない限り、メモリは実際に占有されます。
では、メモリがRedisキャッシュによってゆっくりと占有されている場合はどうなるでしょうか。
メモリがいっぱいで、ハードディスクを使用して保存できますが、ハードディスクはメモリほど高速ではなく、redisのパフォーマンスに影響するため、意味がありません。
したがって、メモリがいっぱいになると、redisはキャッシュ除去メカニズムを提供します。MEMORYMANAGEMENT
maxmemory:メモリが使用されると、キャッシュはクリアされます
* noeviction:旧缓存永不过期,新缓存设置不了,返回错误
* allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)
* allkeys-random:在所有的缓存中随机删除(不推荐)
* volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存
* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存
* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的