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”));

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java向上取整小例子

    java向上取整小例子inttimes=(int)Math.ceil((double)1023/(double)100);如果不double强转的话就是int类型计算结果就是直接取整100如果加double强转就是double类型计算对结果向上取整便是101Math.floor向下取整Math.round四舍五入Math.ceil向上取整

    2022年6月21日
    27
  • pycharm创建anaconda环境_conda怎么安装

    pycharm创建anaconda环境_conda怎么安装1、首先在condaprompt中创建新的环境。condacreate–name<env_name><package_names>尖括号代表文字内容,实际使用时不需要添加。如之后还需要再添加新的库进入环境,需在condaprompt中激活环境,并且利用pip安装新的包。<查看环境列表>condaenvlist或者condainfo-e<激活目标环境>activate<env_name>&l

    2022年8月25日
    8
  • 抖音粉丝快速增长的有效方法 抖音怎么增加1000粉丝

    抖音粉丝快速增长的有效方法 抖音怎么增加1000粉丝同比淘宝、京东、拼多多等成熟的电商平台,抖音视频在短短几年内以“病毒式”的增长速度发展。很多人也想趁着这个风口,抢夺这块蛋糕。但对于,没有运营经验的人来说,账号要做起来并非是这么简单。那么想要做好抖音号,内容策划、账号定位、人群画像、发布时间该注意什么呢?抖音用户画像和人群分析人群性别:抖音的用户中,52%的用户为男性,48%的用户为女性,男女比例基本属于持平。另一方面,抖音的男性大多是理性消费者,女性大多是感性消费者。如果你的产品的针对人群是男性,内容应该偏向性价比、功能、

    2022年5月29日
    45
  • 分酒问题(DFS解法)

    分酒问题(DFS解法)题目大概是这样:已知有三个容量分别为3千克、5千克和8千克的并且是没有刻度的酒瓶,3千克和5千克的瓶子均装满了酒,而8千克的瓶子为空。现要求仅用这三个酒瓶将这些酒均分为两个4千克并分别装入5千克和8

    2022年7月2日
    33
  • 关于Set集合去重[通俗易懂]

    关于Set集合去重[通俗易懂]上次说了List集合的去重,这次来说说Set集合的去重publicstaticvoidmain(String[]args){ HashSeths=newHashSet<>(); hs.add(“a”); hs.add(“b”); hs.add(“c”); hs.add(“a”); hs.add(“a”); for(Objectobj:…

    2022年6月7日
    47
  • 外行假装内行,我也来谈谈SAP BAPI和BADI

    外行假装内行,我也来谈谈SAP BAPI和BADI外行假装内行,我也来谈谈SAPBAPI和BADIA,什么是BAPI?BAPI是businessapplicationprogramminginterface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI。1.BAPI–businessapplicationprogramminginterface。2.它实际上是一种特殊的

    2022年7月24日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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