码迷,mamicode.com
首页 > 其他好文 > 详细

Redis的过期机制

时间:2020-05-01 20:14:10      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:手写   包括   end   math   随机   check   随机选择   turn   nbsp   

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算法

 1 public LRUCache<T> extend LinkedHashMap {
 2     private fianl int CACHE_SIZE;
 3 
 4     LRUCache(int size) {
 5        super((int) MATH.ceil(size/0.75)+1, 0.75f, true)//设置为读取模式
 6        CACHE_SZIE=size;
 7    }
 8     
 9    @Override
10    protected boolean removeEldestEntry(Map.entry eldest) {
11        return eldest.size()>CACHE_SIZE;
12    }
13 }   

 

Redis的过期机制

标签:手写   包括   end   math   随机   check   随机选择   turn   nbsp   

原文地址:https://www.cnblogs.com/wpccc/p/12814560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!