内存淘汰策略主要采用了6种方式进行内存对象的释放操作

1.volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放

2.allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放

3.volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放

4.allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放

5.volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作

6.noeviction:不删除任意数据(但redis还会根据引用计数器进行释放呦~),这时如果内存不够时,会直接返回错误

http://blog.csdn.net/zdy0_2004/article/details/44685615

redis只是每个Object维护一个相对的时间,淘汰时,随机取3个或者更多的,找到最老的进行淘汰.这样节省了双链表的指针开销,读时还不用加锁.虽不能保证一定淘汰最老的,但倾向于淘汰偏老的对象, 经过我们线上的实测:和标准的LRU对比,命中率的损失非常小, 效果不错。

http://blog.csdn.net/wallwind/article/details/44906613

Redis的LRU算法不是一个严格的LRU实现。这意味着Redis不能选择最佳候选键来回收,也就是最久未被访问的那些键。相反,Redis 会尝试执行一个近似的LRU算法,通过采样一小部分键,然后在采样键中回收最适合(拥有最久访问时间)的那个。

然而,从Redis3.0开始,算法被改进为维护一个回收候选键池。这改善了算法的性能,使得更接近于真实的LRU算法的行为。Redis的LRU算法有一点很重要,你可以调整算法的精度,通过改变每次回收时检查的采样数量。

这个参数可以通过如下配置指令:

maxmemory-samples 5

Redis没有使用真实的LRU实现的原因,是因为这会消耗更多的内存。然而,近似值对使用Redis的应用来说基本上也是等价的。

http://blog.csdn.net/codetomylaw/article/details/50246255

惰性删除+定期删除

惰性删除流程

在进行get或setnx等操作时,先检查key是否过期,

若过期,删除key,然后执行相应操作;

若没过期,直接执行相应操作

定期删除流程(简单而言,对指定个数个库的每一个库随机删除小于等于指定个数个过期key)

遍历每个数据库(就是redis.conf中配置的"database"数量,默认为16)

检查当前库中的指定个数个key(默认是每个库检查20个key,注意相当于该循环执行20次,循环体时下边的描述)

如果当前库中没有一个key设置了过期时间,直接执行下一个库的遍历

随机获取一个设置了过期时间的key,检查该key是否过期,如果过期,删除key

判断定期删除操作是否已经达到指定时长,若已经达到,直接退出定期删除。

http://www.cnblogs.com/java-zhao/p/5205771.html

http://www.cnblogs.com/xuliangxing/p/7151812.html

redis 4.0引入LFU,要配置LFU模式,以下策略是可用的:

volatile-lfu:使用LFU算法驱逐keys,在过期的keys中驱逐。

allKeys-lfu:使用LFU算法驱逐keys。

http://blog.csdn.net/iycynna_123/article/details/72628272

http://blog.csdn.net/qq_35440678/article/details/53453107

redid过期策略_Redis数据过期策略详解相关推荐

  1. 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)

    论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...

  2. Discuz3.数据库数据表字典详解(完整版)

    Discuz3.数据库数据表字典详解(完整版) 转自:https://discuzt.cr180.com/discuzcode-db.html pre_common_admincp_cmenu后台菜单 ...

  3. python数据挖掘商业案例_Python数据科学-技术详解与商业实践-第八讲作业

    作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...

  4. [转载]用数据说话 Pytorch详解NLLLoss和CrossEntropyLoss

    [转载]用数据说话  Pytorch详解NLLLoss和CrossEntropyLoss https://www.cnblogs.com/jiading/p/11979391.html NLL_Los ...

  5. Python数据科学-技术详解与商业实践视频教程

    Python数据科学-技术详解与商业实践(八大案例) 网盘地址:https://pan.baidu.com/s/13QrR_5Er6LgWCWzSb7qOrQ 提取码:s7vw 备用地址(腾讯微云): ...

  6. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

  7. java编程数据溢出问题_Java数据溢出代码详解

    Java数据溢出代码详解 发布时间:2020-10-05 15:08:31 来源:脚本之家 阅读:103 作者:Pony小马 java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码 ...

  8. java 分割数据_java 分割csv数据的实例详解

    java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...

  9. c语言 recv_sin,C++_C语言中经socket接收数据的相关函数详解,recv()函数: 头文件:#incl - phpStudy...

    C语言中经socket接收数据的相关函数详解 recv()函数:头文件: #include #include 定义函数: int recv(int s, void *buf, int len, uns ...

最新文章

  1. Tomcat 服务器的端口号的修改
  2. android组件浮动在activity上_Jetpack Hilt 依赖注入框架上手指南
  3. 人力资源中最常见的7张报表
  4. 50兆 svg 文件超过_用svg+css3实现支付宝App波浪功能
  5. boost::statechart模块实现无效结果分配测试
  6. 深入理解Android 卷I 提供预定
  7. 制作mac系统安装U盘
  8. 和我一起学WCF(6):宿主(Hosting)
  9. 本能富可敌国,最后却选择拯救世界!Bram的Vim和乌干达儿童
  10. c++语言表白超炫图形_R语言统计与绘图:组合图形布局
  11. chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
  12. Hadoop2.6分布式集群安装配置
  13. 阿里云运行python_使用阿里云运行python
  14. 程序员为了讨好大舅子,竟自学自动化编程
  15. 数据结构-快速排序 C语言源码
  16. 1:n的冗余备份_备份与冗余:有什么区别?
  17. 成功解决win7安装python过程,Setup failed,需要安装Windows 7 Service Pack 1
  18. 2017安防摄像头技术发展趋势分析
  19. turtle画彩虹蟒蛇
  20. 回顾马云屌丝岁月的惨状:多次被拒失声痛哭

热门文章

  1. 两直线平行交叉相乘_直线与方程概论
  2. 毕业设计论文选题系统系统用例图_基于Web的毕业论文管理系统的设计与实现
  3. oracle linux内存推荐分配,[20191114]linux内存分配的讨论.txt
  4. linux命令怎么查看文件时间排序,linux中ls命令按照文件大小排...-ls命令按大小与时间排序文件...-ls按时间排序输出文件列表的实例分析_169IT.COM...
  5. 海信电视root工具_中国企业的远见:用一项自主技术,打败日韩电视,成为行业引领者...
  6. linux ssh非交互脚本,sshpass-Linux命令之非交互SSH
  7. 测试内存兼容软件,Ryzen内存兼容性测试_内存硬盘行情-中关村在线
  8. python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python
  9. .mvn 需要放git上吗_汽车行李架上可以放东西吗?放了东西可以跑高速吗?
  10. pid和linux的关系,linux – bash pid和$$之间的区别