如果redis没有设置expire,是否默认永不过期?
最近在对项目中redis缓存的过期时间进行设置的时候,忽然想到如果没有设置expire,缓存是否永不过期。
如果没有设置有效期,即使内存用完,redis 自动回收机制也是看设置了有效期的,不会动没有设定有效期的,如果清理后内存还是满的,就不再接受写操作。
Redis无论有没有设置expire,他都会遵循redis的配置好的删除机制,在配置文件里设置: redis最大内存不足"时,数据清除策略,默认为"volatile-lru"。
volatile-lru ->对"过期集合"中的数据采取LRU(近期最少使用)算法.如果对key使用"expire"指令指定了过期时间,那么此key将会被添加到"过期集合"中。将已经过期/LRU的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将OOM。
- allkeys-lru ->对所有的数据,采用LRU算法
- volatile-random ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止. 如果如果"过期集合"中全部移除全部移除仍不能满足,将OOM
- allkeys-random ->对所有的数据,采取"随机选取"算法,并移除选中的K-V,直到"内存足够"为止
- volatile-ttl ->对"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据。
- noeviction ->不做任何干扰操作,直接返回OOM异常
另外,如果数据的过期不会对"应用系统"带来异常,且系统中write操作比较密集,建议采取"allkeys-lru"。
由以上可以看出,对没设置expire的数据,产生影响的是allkeys-lru机制,allkeys-random。
所以redis没设置expire的数据是否会删除,是由你自己选择的删除机制决定的。
在Redis服务器占用内存达到maxmemory最大的情况下,当再想增加内存占用时,会按maxmemory-policy删除机制将老的数据删除。
这里简单说一下volatile-lru,Redis会按LRU算法删除设置了过期时间但还没有过期的key,而对于没有设置过期时间的key,Redis是永远保留的。当然,如果你不想删除没有过期的key,那可以使用noeviction机制。
如果redis没有设置expire,是否默认永不过期?相关推荐
- 如果redis没有设置expire,他是否默认永不过期?
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/soulmate_P/article/details/81136054 如果没有设置有效期,即使内存用 ...
- 设置oracle数据库密码永不过期(ORA-28002)
设置oracle数据库密码永不过期(ORA-28002) 现象描述: 登陆oracle11g 提示ERROR:ORA-28002: the password will expire within ...
- profile_oracle设置某用户密码永不过期
原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46888139 or ...
- profile oracle设置某用户密码永不过期
原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46888139 or ...
- Windows Server 2012 R2设置域控密码永不过期
Windows Server 2012 R2设置域控密码永不过期 net accounts /maxpwage:unlimited
- redis设置expire以及删除机制
版权声明:转载请标注地址: https://blog.csdn.net/soulmate_P/article/details/81136054 </div><link rel=&qu ...
- mysql密码过期解决办法,mysql密码永不过期
1.进入到数据库服务器,windows需要进入到bin目录,linux应该是任意目录即可(但需要账号有权限).以windows为例:C:\Program Files\MySQL\MySQL Serve ...
- 在Redis中设置了过期时间的Key,需要注意哪些问题?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...
- 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?
熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...
最新文章
- (CV方向)精通C++,该如何学?
- JS 中settimeout和setinterval函数的区别
- C#中使用SharpZipLib进行解压缩并使用ProtoBuf进行反序列化
- macOS的关于屏幕录制的快捷键和操作
- consumer和partition的数量建议
- php 配置远程调试,PHP Linux 环境下搭建 XDEBUG并配置远程调试
- linux下 java 文本_Java中如何将输入的信息写入文本中
- Flink 状态管理
- 百面机器学习 #3 经典算法:02 逻辑回归
- 10 亿产业基金加持,让精准定位在物联网应用中实现无限可能!
- 基于机器视觉的马达孔直径中心距、齿数线序测量
- 剑指 Offer JZ35 复杂链表的复制
- 软考中常见的英文缩写
- 计算机连接了无线网络显示有限的访问权限,win7连接无线网络提示有限的访问权限怎么办...
- CSS实现最简洁的四角边框
- 电脑更换硬盘应该注意什么?
- 怎么给PPT文档加密
- java 10进制转16进制
- 【测试源】bbb_sunflower_1080p_30fps_normal.mp4 等下载地址
- 国盛源投资量化买卖一定会挣钱吗?量化买卖怎样挣钱的?