一、逻辑图
二、淘汰策略
// 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;
}
}
来源:oschina
链接:https://my.oschina.net/u/2544373/blog/3050387