首页 > 数据库 >【Redis】Key过期了为什么内存没有释放

【Redis】Key过期了为什么内存没有释放

时间:2022-09-25 18:35:44浏览次数:73  
标签:Key 删除 过期 Redis 时间 内存 key

SET除了可以设置key-value之外,还可以设置key的过期时间。


 

 


如果想要修改key的值,使用set命令,而没有加上过期时间的参数,那么这个key的过期时间将会被擦除。
导致这个问题的原因在于:SET命令如果不设置过期时间,那么Redis会自动擦除这个key的过期时间,如果你发现Redis的内存持续增长,而且很多key原来设置了过期时间,后来发现过期时间丢失了,很多都是这个原因导致的。
这时你的Redis中就会存在大量不过期的key,消耗过多的内存资源,所以,你在使用SET命令时,如果刚开始设置了过期时间,那么之后修改这个key,也务必要加上过期时间的参数,避免过期时间丢失的问题。

 

Redis对于过期key的处理一般有惰性删除和定时删除两种策略

  1. 惰性删除:当读/写一个已经过期的key时,会触发惰性删除策略,判断key是否过期,如果过期了直接删除掉这个key.
  2. 定时删除:由于惰性删除策略无法保证冷数据被即使删除掉,所以Redis会定期(默认每100ms)主动淘汰一批过期的key,这里的一批只是部分过期key,所以可能会出现部分key已经过期但还没有被清理掉的情况,导致内存并没有被释放。

标签:Key,删除,过期,Redis,时间,内存,key
From: https://www.cnblogs.com/cuipengchong/p/16728427.html

相关文章

  • Redis持久化
    为了防止Redis宕机导致数据全部清空,所以有持久化操作 显然不能高频的生成RDB文件进行备份,毕竟数据多,而且操作耗时。所以需要将增删改的操作写进AOF文件 但是也不能......
  • 吉特日化MES & Redis 运行远程访问的配置
     在吉特日化MES系统部署实施过程中,经常需要配置Redis需要运行远程IP访问Redis。使用Redis的目的主要是为了解决缓存的问题,同时解决打印过程中推送数据的问题。......
  • Redis面试题
    1.项目中是否使用过redis?为什么要使用redis?使用过之前使用的都是修改某个value值,如登录账号被锁定30分钟,查看还剩余的时间,或者想将账号由锁定状态更新为未锁定状态,删......
  • KeyShot Pro 11入门:如何选择环境渲染图像
    KeyShotPro11可以让您在几分钟内渲染图像。通过提供许多高级功能和即时实时反馈的简单界面,您可以在专注于设计的同时节省时间。下面为您带来了KeyShotPro11入门,只要讲......
  • aardio + AutoHotkey 混合编程
    本文主要介绍aardio+AutoHotkey混合编程。在aardio中可以调用很多编程语言,例如C语言、C++、C#、Java、Python、R、Javascript、Node.Js、Fortran、VB、FlashActio......
  • Redis 基本操作
    字符串(Strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)......
  • MySQL和Redis的区别
    1.mysql和redis的数据库类型mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据......
  • 驱动开发:内核CR3切换读写内存
    首先CR3是什么,CR3是一个寄存器,该寄存器内保存有页目录表物理地址(PDBR地址),其实CR3内部存放的就是页目录表的内存基地址,运用CR3切换可实现对特定进程内存地址的强制读写操......
  • 1.springsecurity基于内存和数据库的认证
    1.总结:昨天主要是使用security实现了基于内存的认证和基于数据库的认证(实际项目中使用);在security的项目中,必须配置WebSecurityConfigurerAdaptor的实现类来重写它的基于......
  • Redis-----Redis高可用理论
    Redis虽然是一个非常好用的缓存数据库,但是同样也会面临在分布式环境中,单点故障等一些常见的问题,所以,可以通过一些方式去做到规避单点故障等一些的问题Redis可以沿用AKF的......