redid过期策略_Redis数据过期策略详解
内存淘汰策略主要采用了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数据过期策略详解相关推荐
- 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...
- Discuz3.数据库数据表字典详解(完整版)
Discuz3.数据库数据表字典详解(完整版) 转自:https://discuzt.cr180.com/discuzcode-db.html pre_common_admincp_cmenu后台菜单 ...
- python数据挖掘商业案例_Python数据科学-技术详解与商业实践-第八讲作业
作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...
- [转载]用数据说话 Pytorch详解NLLLoss和CrossEntropyLoss
[转载]用数据说话 Pytorch详解NLLLoss和CrossEntropyLoss https://www.cnblogs.com/jiading/p/11979391.html NLL_Los ...
- Python数据科学-技术详解与商业实践视频教程
Python数据科学-技术详解与商业实践(八大案例) 网盘地址:https://pan.baidu.com/s/13QrR_5Er6LgWCWzSb7qOrQ 提取码:s7vw 备用地址(腾讯微云): ...
- android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】
本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...
- java编程数据溢出问题_Java数据溢出代码详解
Java数据溢出代码详解 发布时间:2020-10-05 15:08:31 来源:脚本之家 阅读:103 作者:Pony小马 java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码 ...
- java 分割数据_java 分割csv数据的实例详解
java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...
- c语言 recv_sin,C++_C语言中经socket接收数据的相关函数详解,recv()函数:
头文件:#incl - phpStudy...
C语言中经socket接收数据的相关函数详解 recv()函数:头文件: #include #include 定义函数: int recv(int s, void *buf, int len, uns ...
最新文章
- Tomcat 服务器的端口号的修改
- android组件浮动在activity上_Jetpack Hilt 依赖注入框架上手指南
- 人力资源中最常见的7张报表
- 50兆 svg 文件超过_用svg+css3实现支付宝App波浪功能
- boost::statechart模块实现无效结果分配测试
- 深入理解Android 卷I 提供预定
- 制作mac系统安装U盘
- 和我一起学WCF(6):宿主(Hosting)
- 本能富可敌国,最后却选择拯救世界!Bram的Vim和乌干达儿童
- c++语言表白超炫图形_R语言统计与绘图:组合图形布局
- chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
- Hadoop2.6分布式集群安装配置
- 阿里云运行python_使用阿里云运行python
- 程序员为了讨好大舅子,竟自学自动化编程
- 数据结构-快速排序 C语言源码
- 1:n的冗余备份_备份与冗余:有什么区别?
- 成功解决win7安装python过程,Setup failed,需要安装Windows 7 Service Pack 1
- 2017安防摄像头技术发展趋势分析
- turtle画彩虹蟒蛇
- 回顾马云屌丝岁月的惨状:多次被拒失声痛哭
热门文章
- 两直线平行交叉相乘_直线与方程概论
- 毕业设计论文选题系统系统用例图_基于Web的毕业论文管理系统的设计与实现
- oracle linux内存推荐分配,[20191114]linux内存分配的讨论.txt
- linux命令怎么查看文件时间排序,linux中ls命令按照文件大小排...-ls命令按大小与时间排序文件...-ls按时间排序输出文件列表的实例分析_169IT.COM...
- 海信电视root工具_中国企业的远见:用一项自主技术,打败日韩电视,成为行业引领者...
- linux ssh非交互脚本,sshpass-Linux命令之非交互SSH
- 测试内存兼容软件,Ryzen内存兼容性测试_内存硬盘行情-中关村在线
- python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python
- .mvn 需要放git上吗_汽车行李架上可以放东西吗?放了东西可以跑高速吗?
- pid和linux的关系,linux – bash pid和$$之间的区别