首页 > 数据库 >如果redis没有设置expire,他是否默认永不过期

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

时间:2024-01-15 19:00:14浏览次数:32  
标签:key 过期 redis expire 内存 设置 移除

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

通过EXPIRE key seconds 命令来设置数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。在key上设置了过期时间后key将在指定的秒数后被自动删除。被指定了过期时间的key在Redis中被称为是不稳定的。

Redis key过期的方式有三种:

惰性删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key(无法保证冷数据被及时删掉)
定期删除:Redis会定期主动淘汰一批已过期的key(随机抽取一批key检查)
内存淘汰机制:当前已用内存超过maxmemory限定时,触发主动清理策略

1、如果没有设置有效期,即使内存用完,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异常

 

标签:key,过期,redis,expire,内存,设置,移除
From: https://www.cnblogs.com/oktokeep/p/17966066

相关文章

  • Redis 做缓存常见的几个问题总结
     1.数据一致性我们知道,Redis主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用Redis做缓存,那么就会存在数据同步的问题。一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请......
  • Redis、Memcache和MongoDB的区别
    Redis、Memcache和MongoDB的区别 >>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为sessionhandle。Memcached的......
  • CompletableFuture多线程与redis分布式锁
    @AutowiredpublicRedisTemplateredisTemplate;booleanlock=redisTemplate.opsForValue().setIfAbsent("lock","redisLock");//获取锁      booleanredisLock=redis.getRedisLock();      if(redisLock){        //创建线......
  • Redis - Design
           ......
  • Redis - Use case of GETRANGE, SETRANGE, MGET, MSET
            ......
  • Redis Commands - GETRANGE SETRANGE
      Overwritespartofthestringstoredat key,startingatthespecifiedoffset,fortheentirelengthof value.Iftheoffsetislargerthanthecurrentlengthofthestringat key,thestringispaddedwithzero-bytestomake offset fit. 127.......
  • Redis - Use case of expiration options
        Automaticallydeletingthecachedkey: ......
  • redis工具类封装
    封装Redis工具类方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间方法2:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置逻辑过期时间,用于处理缓存击穿问题方法3:根据指定的key查询缓存,并反序列化为指定类型,利用缓存空......
  • Redis - Why use Redis?
    RedisisfastWhyisRedisfast?AlldataisstoredinmemoryDataisorganizedinsimpledatastructuresRedishasasimplefeatureset       ......
  • redis 数据库
    1redis单机数据库结构1redisserver/client结构 2 每个数据库都有一个包含所有数据的字典 2过期时间redis每个库都会保存一个结构,里面包含了每个键的过期时间的字典结构;redis 如何判断过期,首先检查给的键是否在过期字典中,如果在,那就获取过期时间,在检查当前Un......