一、内存淘汰机制
redis 内存淘汰机制有以下几个:
noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。
allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key(这个是最常用的)。
allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。
volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key(这个一般不太合适)。
volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。
volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。
LRU算法实现类:
package com.test.day01;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 手写LRU 算法
* @author zc
*
*/
public class LRUCache<K,V> extends LinkedHashMap<K,V>{
private static final long serialVersionUID = 1L;
//设置缓存的大小
private int CACHE_SIZE;
/**
* 构造函数初始化缓存的大小
* @param cacheSize 缓存大小
*/
public LRUCache(int cacheSiz