手書きRedisでの期限切れポリシーのLRUアルゴリズム

3412 ワード

/**
 *   LRU  
 *
 * @author liyue
 * @date 2020-03-04 00:32
 */
public class LRUCache<K, V> extends LinkedHashMap<K, V> {

    private final int CACHE_SIZE = 100;

    // cacheSize                   

    public LRUCache(int cacheSize) {

        //         hashmap     ,      true    linkedHashMap           ,        ,         。

        super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true);
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {

        //       ,                ,          
        return size() > CACHE_SIZE;
    }
}


Redisのメモリ淘汰アルゴリズムにはLRUアルゴリズムがあります.たとえば、allkeys-lru:新しい書き込みを許容するメモリが不足している場合は、キースペースで、最近使用したkeyの最小使用量を削除します.
私のここのLRUアルゴリズムは石杉先生が提供したものです.