Redis的过期机制
1. Redis的过期key删除机制
定期删除:redis每100ms会定期去抽一批设置了过期时间的key去检查是否过期
惰性删除:当你通过redis获取该key的时候,redis会去check一下
这样就会导致一个问题,假设一个key过期了,我也不去访问。他就会一直存在内存当中,所以可能会导致内存满掉,因此Redis还引入了内存淘汰机制。
内存淘汰策略主要采用了6种方式进行内存对象的释放操作
- volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放
- allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放
- volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放
- allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放
- volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作
- noeviction:不删除任意数据(但redis还会根据引用计数器进行释放呦~),这时如果内存不够时,会直接返回错误
2. 手写一个LRU算法
public LRUCache<T> extend LinkedHashMap { private fianl int CACHE_SIZE; LRUCache(int size) { super((int) MATH.ceil(size/0.75)+1, 0.75f, true)//设置为读取模式 CACHE_SZIE=size; } @Override protected boolean removeEldestEntry(Map.entry eldest) { return eldest.size()>CACHE_SIZE; } }
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04