Redis内存淘汰策略

时光毁灭记忆、已成空白 提交于 2021-02-09 09:53:00

一、逻辑图

二、淘汰策略

// noeviction
当内存不足时,新写入操作会报错。

// allkeys-random
当内存不足时,在键空间中,随机移除某个key。

// allkeys-lru
当内存不足时,在键空间中,移除最近最少使用的key。

// volatile-lru
当内存不足时,在设置了过期时间的键空间中,移除最近最少使用的key

// volatile-random
当内存不足时,在设置了过期时间的键空间中,移除随机某个key

// volatile-ttl
当内存不足时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

三、考点剖析

1、如何设置淘汰策略?

//Redis.conf
maxmemory-policy allkeys-lru 

2、LRU算法的简单实现

import java.util.LinkedHashMap;   
import java.util.Map;

public class LruCache<K, V> extends LinkedHashMap<K, V> {
    private final int maxCapacity;  
    private final float DEFAULT_LOAD_FACTOR = 0.75f;  
    
    public LruCache(int maxCapacity) {
        super(maxCapacity, DEFAULT_LOAD_FACTOR, true);  
        this.maxCapacity = maxCapacity;  
    }
    
    @Override 
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {  
        return size() > maxCapacity;  
    }  
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!