【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

Redis 过期策略:深入探索过期机制 (redis过期策略六种)

用户投稿2024-04-19热门资讯17

概述

Redis 是一个流行的键值存储数据库,它支持对键值对设置过期时间。过期时间一到,Redis 会自动删除该键值对,释放内存空间。Redis 提供了六种不同的过期策略,每种策略都有其独特的优势和弱点。

过期策略

1. 定时删除(expire)这是最基本的过期策略。当一个键值对被设置了过期时间后,Redis 会创建一个定时器。当定时器到期时,Redis 会删除该键值对。这种策略是简单有效的,但它有一个缺点:如果 Redis 服务器宕机,丢失的键值对无法恢复。2. 定期检查(periodic)在这种策略下,Redis 会定期扫描数据库,删除过期的键值对。这种策略可以防止 Redis 服务器宕机时键值对丢失,但它会增加 Redis 的开销。3. 惰性删除(lazy)惰性删除策略只在访问一个过期的键值对时才将其删除。这种策略可以最大限度地减少 Redis 的开销,但它可能会导致过期的键值对在一段时间内仍存在于数据库中。4. 过期删除(evict)过期删除策略类似于惰性删除策略,但它会在访问一个过期的键值对后将其删除,并从数据库中驱逐其他接近过期的键值对。这种策略可以有效地平衡 Redis 的开销和内存使用率。5. 定期采样(sample)定期采样策略会周期性地对数据库进行采样,并删除少量过期的键值对。这种策略可以减少 Redis 的开销,同时仍能有效地管理过期键值对。6. 可持续删除(tail)可持续删除策略会定期删除最老的过期的键值对。这种策略可以确保数据库中过期的键值对的数量受到控制,但它可能会导致新过期的键值对在一段时间内仍存在于数据库中。

选择合适策略

选择合适的过期策略取决于系统的特定要求。如果系统对键值对丢失非常敏感,则计时删除策略可能是最好的选择。如果系统对性能要求非常高,则惰性删除策略可能是最好的选择。如果系统需要在性能和内存使用率之间取得平衡,则过期删除策略可能是最好的选择。

配置过期策略

可以通过以下命令配置 Redis 的过期策略:```SET EX SET PX ```其中,` ` 和 ` ` 指定了过期时间,` ` 是键,` ` 是值。

结论

Redis 提供了六种不同的过期策略,每种策略都有其独特的优点和弱点。通过选择合适的过期策略,可以优化 Redis 的性能和内存使用率,满足系统的特定要求。

redis过期策略有哪些?

Redis 过期策略:深入探索过期机制 (redis过期策略六种) 第1张

redis 过期策略是:定期删除+惰性删除。

所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

假设redis里放了10w个key,都设置了过期时间,每隔几百毫秒,就检查10w个key,那redis基本上就死了,cpu负载会很高的,消耗在检查过期key上了。实际上redis是每隔100ms随机抽取一些key来检查和删除的。

Redis常用内存优化:

Redis内部实现没有对内存分配方面做过多的优化,在一定程度上会存在内存碎片,不过大多数情况下这个不会成为Redis的性能瓶颈,不过如果在Redis内部存储的大部分数据是数值型的话,Redis内部采用了一个shared integer的方式来省去分配内存的开销。

即在系统启动时先分配一个从1~n那么多个数值对象放在一个池子中,如果存储的数据恰好是这个数值范围内的数据,则直接从池子里取出该对象,并且通过引用计数的方式来共享,这样在系统存储了大量数值下。

也能一定程度上节省内存并且提高性能,这个参数值n的设置需要修改源代码中的一行宏定义REDIS_SHARED_INTEGERS,该值默认是,可以根据自己的需要进行修改,修改后重新编译就可以了。

以上内容参考网络百科—Redis

Redis过期删除策略和内存淘汰策略

Redis可以用使用 expire 指令设置过期时间,在Redis内部,每当我们设置一个键的过期时间时,Redis就会将该键带上过期时间存放到一个过期字典中。当我们查询一个键时,Redis便首先检查该键是否存在过期字典中,如果存在,那就获取其过期时间。然后将过期时间和当前系统时间进行比对,比系统时间大,那就没有过期;反之判定该键过期。

那对于过期数据,一般有三种方式进行处理:

Redis的过期删除策略: 惰性删除 和 定期删除 两种策略配合使用。

spring-boot-starter-data-redis 包中提供了监听过期的类,对于key过期,需要得到通知,做业务处理的,可以做此监听。

springboot整合Redis参考, SpringBoot整合Redis -() 在整合Redis的基础上,在新加监听配置

监听配置类

监听类

将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。

Redis中有6种淘汰策略:

文件中配置策略,有2个地方:

Redis缓存过期机制

一、针对与设置了过期时间的key值 1.(主动)定期删除:定时随机的检查过期的key,如果过期则清理删除 (每秒检查的次数1-500)配置: hz 10 2.(被动)惰性删除:当客户端请求到一个已经过期的key时,redis会检查是否过期并删除 所以,虽然key过期了,但是没被清理的话,还是会占内存的。 二、内存淘汰管理机制Memory Management 当内存占满之后,redis提供缓存淘汰机制。 : maxmemory <bytes> * noeviction:旧缓存永不过期,新缓存设置不了,返回错误 * allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用) * allkeys-random:在所有的缓存中随机删除(不推荐) * volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存 * volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存 * volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

Redis 过期策略:深入探索过期机制 (redis过期策略六种) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!