redis有效时间设置及时间过期处理_查看redis状态

redis有效时间设置及时间过期处理_查看redis状态redis是在内存中进行缓存的,我们在设置redis缓存时,可以设置下过期时间。那么在设置时间到期后redis是如何进行数据删除的。redis清理过期数据。定期清理+惰性清理定期删除:redis数据库默认每隔100ms就会进行随机抽取一些设置过期时间的key进行检测,过期则删除。惰性删除:定期删除还没有来得及删除,就被程序请求到的一个过期key,redis会先检测key是否,过期,如果过期则删…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

redis是在内存中进行缓存的,我们在设置redis缓存时,可以设置下过期时间。那么在设置时间到期后redis是如何进行数据删除的。

redis清理过期数据。

定期清理 + 惰性清理

定期删除:redis数据库默认每隔100ms就会进行随机抽取一些设置过期时间的key进行检测,过期则删除。

惰性删除:定期删除还没有来得及删除,就被程序请求到的一个过期key,redis会先检测key是否,过期,如果过期则删除,不进行返回。

但是前面两种机制可能还导致一些问题就是,过期的key如果大量堆积,删除的速度太慢,内存爆满怎么办?

内存淘汰机制

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)就是LRU算法。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,一般没人用。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

LRU算法实现

public class LRUCache extends LinkedHashMap {

private final int CACHE_SIZE;

// 这里就是传递进来最多能缓存多少数据

public LRUCache(int cacheSize) {

super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true); // 这块就是设置一个hashmap的初始大小,同时最后一个true指的是让linkedhashmap按照访问顺序来进行排序,最近访问的放在头,最老访问的就在尾

CACHE_SIZE = cacheSize;

}

@Override

protected boolean removeEldestEntry(Map.Entry eldest) {

return size() > CACHE_SIZE; // 这个意思就是说当map中的数据量大于指定的缓存个数的时候,就自动删除最老的数据

}

}

public static void main(String[] args) {

LRUCache testCache = new LRUCache<>(3);

testCache.put(“A”, 1);

testCache.put(“B”, 2);

testCache.put(“C”, 3);

System.out.println(testCache.get(“B”));

System.out.println(testCache.get(“A”));

testCache.put(“D”, 4);

System.out.println(testCache.get(“D”));

System.out.println(testCache.get(“C”));

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189219.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 转让malloc()该功能后,发生了什么事内核?附malloc()和free()实现源

    转让malloc()该功能后,发生了什么事内核?附malloc()和free()实现源

  • webstrom 2022激活码_在线激活

    (webstrom 2022激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • java定时任务schedule_timer schedule参数

    java定时任务schedule_timer schedule参数该楼层疑似违规已被系统折叠隐藏此楼查看此楼==============java定时器可以用作,定时刷新缓存等。。。。。。。。。。。timer.schedule(task,firstTime,period);task参数是,TimerTask类,在包:importjava.util.TimerTask.使用者要继承该类,并实现publicvoidrun()方法,因为Tim…

  • android中的加密算法,Android中加密算法[通俗易懂]

    android中的加密算法,Android中加密算法[通俗易懂]Android中的加密算法可以分为两类:对称加密和非对称加密对称加密(DES、3DES、AES)概念对称加密算法中,发送方将明文和加密密匙经过特殊加密算法处理后,使其形成变成复杂的密文后发送出去。接受方用同样的密匙、同样加密算法的逆算法对密文进行解密。传统的DES加密算法只有56位密匙,最新AES技术拥有128位密匙。大大提高了安全性。优点:算法公开、计算量小、加密速度快、加密效率高缺点:发送…

  • pychrm激活码_通用破解码

    pychrm激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • ipset常用命令

    ipset常用命令ipset设置安装#yuminstallipset创建ipset黑名单(黑名单名称为blacklist)#ipsetcreateblacklisthash:iptimeout259200hashsize4096maxelem1000000查看列表#ipsetlistblacklist向黑名单中添加IP/端口#ipsetaddbl…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号