6.Redis期限切れポリシーと淘汰メカニズム及び手書きLRU実現
1481 ワード
Redis失効ポリシー
定期削除+不活性削除
定期削除とは、Redisが一定時間にランダムに一部のkeyを選択して期限切れ判定を行い、keyが期限切れになった場合にkeyを削除することを意味します.すべて削除しない理由は、メモリ消費量が大きいため、Redisの稼働効率が低下するためです.
不活性削除は,定期削除ではRedis keyの期限切れ削除の問題を徹底的に解決できないため,ユーザがあるkeyを呼び出すと,そのkeyの生存時間が判断され,期限切れであれば削除され,期限切れでなければ使用が継続される.
定期削除+不活性削除の問題:
定期的に削除できず呼び出していないkeyが存在するか
解決方法:Redis淘汰メカニズム
Redis淘汰メカニズム
redisでconfファイルには、次の行の構成があります.
# maxmemory-policy volatile-lru
この構成は、メモリの淘汰ポリシーを設定します.
新しい書き込みデータを格納するメモリが不足している場合
手書きLRU
public class LRUCache extends LinkedHashMap {
private final int CACHE_SIZE;
//
public LRUCache(int cacheSize) {
super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true);
// HashMap
// true LinkedHashMap
// ,
CACHE_SIZE = cacheSize;
}
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > CACHE_SIZE;
// map
//
}
}