最近在对项目中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,是否默认永不过期?相关推荐

  1. 如果redis没有设置expire,他是否默认永不过期?

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/soulmate_P/article/details/81136054 如果没有设置有效期,即使内存用 ...

  2. 设置oracle数据库密码永不过期(ORA-28002)

    设置oracle数据库密码永不过期(ORA-28002) 现象描述:   登陆oracle11g 提示ERROR:ORA-28002: the password will expire within ...

  3. profile_oracle设置某用户密码永不过期

    原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46888139 or ...

  4. profile oracle设置某用户密码永不过期

    原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46888139 or ...

  5. Windows Server 2012 R2设置域控密码永不过期

    Windows Server 2012 R2设置域控密码永不过期 net accounts /maxpwage:unlimited

  6. redis设置expire以及删除机制

    版权声明:转载请标注地址: https://blog.csdn.net/soulmate_P/article/details/81136054 </div><link rel=&qu ...

  7. mysql密码过期解决办法,mysql密码永不过期

    1.进入到数据库服务器,windows需要进入到bin目录,linux应该是任意目录即可(但需要账号有权限).以windows为例:C:\Program Files\MySQL\MySQL Serve ...

  8. 在Redis中设置了过期时间的Key,需要注意哪些问题?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...

  9. 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

最新文章

  1. (CV方向)精通C++,该如何学?
  2. JS 中settimeout和setinterval函数的区别
  3. C#中使用SharpZipLib进行解压缩并使用ProtoBuf进行反序列化
  4. macOS的关于屏幕录制的快捷键和操作
  5. consumer和partition的数量建议
  6. php 配置远程调试,PHP Linux 环境下搭建 XDEBUG并配置远程调试
  7. linux下 java 文本_Java中如何将输入的信息写入文本中
  8. Flink 状态管理
  9. 百面机器学习 #3 经典算法:02 逻辑回归
  10. 10 亿产业基金加持,让精准定位在物联网应用中实现无限可能!
  11. 基于机器视觉的马达孔直径中心距、齿数线序测量
  12. 剑指 Offer JZ35 复杂链表的复制
  13. 软考中常见的英文缩写
  14. 计算机连接了无线网络显示有限的访问权限,win7连接无线网络提示有限的访问权限怎么办...
  15. CSS实现最简洁的四角边框
  16. 电脑更换硬盘应该注意什么?
  17. 怎么给PPT文档加密
  18. java 10进制转16进制
  19. 【测试源】bbb_sunflower_1080p_30fps_normal.mp4 等下载地址
  20. 国盛源投资量化买卖一定会挣钱吗?量化买卖怎样挣钱的?

热门文章

  1. 有道笔记 android,随时随地,记录一切:有道笔记Android版体验
  2. 庄子 “唯至人乃能游于世不避,顺人而不失己。”
  3. GMT中文字体显示配置
  4. 自动控制原理之如何理解梅森公式(内附MATLAB求解传递函数程序)
  5. 使用G.Projector 探索不同地图投影的效果
  6. Linux压缩|解压_CodingPark编程公园
  7. python 源代码 macd双底 高 低_macd双底选股公式
  8. 数字通信基本原理与设备
  9. 模糊数学学习笔记 1:模糊集
  10. 3DMAX动画渲染 军舰在海中航行