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

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


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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BIOS和EC

    BIOS和EC08年做MID时候的一个PPT.Agenda硬件平台BIOS介绍功能类型,种类内部模块(AWARD为例)EC介绍功能(IT8511ELPCEC为例)EC与BIOS关系硬件平台BIOS介绍BIOS(BasicInputOutputSystem)即基本输入/输出系统。存放在一个不需要电源的记忆体(芯片)中,这就

    2022年7月20日
  • ROS学习(开篇)Ubuntu16.04安装ROS Kinetic详细教程

    ROS学习(开篇)Ubuntu16.04安装ROS Kinetic详细教程之前关于ROS学习的博客,都是在win10虚拟机环境下运行的ubuntu18.04系统,对应的ros版本为melodic。由于电脑性能不好,运行导航仿真感觉卡顿,所以我把家里的台式机搞成了ubuntu16.04和win10双系统。ubuntu16.04系统的安装网上很多资料,本篇只是记录下ros的安装步骤,仅供参考。本篇文章只解决我遇到的错误,若不能解决你的错误,请自行百度,哈哈,网上的资料还是很多的。

    2022年9月3日
  • Java网络编程基础(Netty预备知识)[通俗易懂]

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~我是分割线最近在重新学习Java网络编程基础,以便后续进行Netty的学习。整理了一下重要的基础知识点,供大家参考。正在读这篇随笔的你是否遇到

    2022年2月16日
  • 2021最新java详细学习路线及路线图(超详细)「建议收藏」

    2021最新java详细学习路线及路线图(超详细)「建议收藏」本文将告诉你学习Java的一些步骤,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。文末给大家准备了惊喜,希望大家都能够坚持看完哦~一、Java基础二、Java学习七大阶段[阶段1、JavaSE基础][阶段2、WEB前端][阶段3、数据库][阶段4、JavaWeb][阶段5、JavaWeb项目][阶段…

    2022年6月16日
  • Photoshop CC2019 快捷键壁纸 快捷键大全

    Photoshop CC2019 快捷键壁纸 快捷键大全篇幅较长,建议先收藏,以后有需要了随时可以查看一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具【M】 移动工具【V】 套索、多边形套索、磁性套索【L】 魔棒工具【W】 裁剪工具【C】 切片工具、切片选择工具【K】 喷枪工具【J】 画笔工具、铅笔工具【B】 像皮图章、图案图章【S】 历史画笔工具、艺…

    2022年9月29日
  • 【SPSS统计分析】SPSS聚类分析:一个案例演示聚类分析全过程(附SPSS 19.0中文版下载)「建议收藏」

    【SPSS统计分析】SPSS聚类分析:一个案例演示聚类分析全过程(附SPSS 19.0中文版下载)「建议收藏」摘要:案例数据源:有20种12盎司啤酒成分和价格的数据,变量包括啤酒名称、热量、钠含量、酒精含量、价格。数据来自《SPSSforWindows统计分析》。目录问题一:选择那些变量进行聚类?——采用“R型聚类”问题二:20中啤酒能分为几类?——采用“Q型聚类”问题三:用于聚类的变量对聚类过程、结果又贡献么,有用么?——采用“单因素方差分析”问题四:聚类结果的解释?——采用”均值比较描述统计“问题一:选择那些变量进行聚类?——采用“R型聚类”1、现在我们…

    2022年10月18日

发表回复

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

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