Redis 过期策略:深入探索过期机制 (redis过期策略六种)
概述
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结论
Redis 提供了六种不同的过期策略,每种策略都有其独特的优点和弱点。通过选择合适的过期策略,可以优化 Redis 的性能和内存使用率,满足系统的特定要求。redis过期策略有哪些?
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过期时间的缓存中,删除即将过期的
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 探索荣誉证书模板的优势,创造卓越的认可 (探索荣誉证书怎么获得)
- 用创意模板设计引人注目的荣誉证书 (用创意模板设计图片)
- 提升你的认可:使用免费的荣誉证书模板 (提升你的认可度英语)
- 一步步指南:轻松制作定制的荣誉证书 (一步一步讲解)
- 即用即删:立即生成徽标,随时下载和使用 (即删是什么意思)
- 零设计费用:享受免费的徽标生成服务,无需任何隐藏费用 (零元设计费的坑)
- 省时省力:轻松创建徽标,节省时间和麻烦 (省时省力啥意思)
- 定制化解决方案:获得符合您的独特业务需求的定制徽标 (定制化解决方案配图)
- 全面的体验:从概念到完成,打造完美的品牌标识 (全方位体验)
- 瞬间设计:即时生成数千个自定义徽标选项 (什么是瞬间艺术?)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~