Redis 过期策略和淘汰策略
1、Redis 过期策略
Redis 过期策略用于处理设置了缓存时间的数据,使用定时扫描和惰性删除机制删除到期的缓存数据。
Redis 将设置了过期时间的 key 保存在一个独立的字典中,定时扫描就是针对这个字典,删除到期的 key。
定时扫描的默认设置就是每秒进行10次扫描,从字典中随机选择20个 key,将其中到期的 key 删除,如果到期的 key 超过四分之一,则继续扫描,删除,为了避免迭代次数过多造成服务卡顿,将扫描时间默认设置为最多25毫秒。实际使用时,为了避免大量 key 在同一时间到期,造成上述情况引起的卡顿问题,在设置 key 的到期时间时,最好在过期时间基础上添加一个随机时间。
惰性删除就是在客户端使用 key 的时候,Redis 检查这个 key 的过期时间,如果到期了就立即删除。
2、Redis 淘汰策略
Redis 陶策策略是在 Redis 内存超出物理内存限制时,采用的策略,用于删除部分 key,以保证线上读写服务的进行,其中物理内存限制可以设置。
Redis 提供了 6 种淘汰策略:
noeviction:默认策略,这种策略会继续处理读请求,删除请求,但是不会处理写请求,好处就是不会丢失数据。
volatile-lru:最少使用并且设置了过期时间的 key 最先被淘汰,这种算法依据元素最近被访问的时间进行排序,这样最近被使用的 key 就不会被删除。
volatile-ttl:设置了过期时间并且剩余时间最小的 key 最先被删除。
volatile-random:设置了过期时间的 key 被随机选中删除。
allkeys-random:从所有 key 中随机选择删除。
allkeys-lru:类似volatile-lru策略,只是从所有 key 中 选择。
Redis这种淘汰策略删除数据,使用的是异步线程进行处理,避免删除操作造成线上服务的卡顿。
Redis 过期策略和淘汰策略相关推荐
- 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)
redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...
- Redis(五)Redis内存维护方案(过期策略及淘汰策略)
目录 内存维护解决方案 过期策略 内存淘汰策略 内存维护解决方案 在Redis的配置文件中redis.conf 中memeory managment # maxmemory <bytes> ...
- redis过期策略与淘汰策略
redis过期策略与淘汰策略 1.过期策略 2.淘汰策略 3.在哪里配置? 4.Lazy Free 1.过期策略 1.redis中所有的key都可以通过expire命令来设置过期时间,所有被设置了过期 ...
- Redis-设置过期时间及淘汰策略
文章目录 1. TTL 2. 设置过期时间 3. 删除过期key 4. 淘汰策略 Redis-设置过期时间及淘汰策略 项目组使用的 Redis 服务器发出了内存不足报警,查了一些资料,记录下. 1. ...
- Reds 过期策略 内存淘汰策略 持久化策略
过期策略 定期删除 redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key. 定期删除策略 Redis 默认会每秒进行十次过期扫描(100ms ...
- Redis 过期 key 清理删除策略汇总
Redis 底层使用了三种策略来清理过期的key 一.被动清理 触发条件:读/写一个已经过期的key 当读写一个key时,Redis首先检查key是否存在,若存在且已经过期,则删除key的同时返回ni ...
- redis的过期策略和淘汰策略
过期键删除策略 1.定时删除:在设置键的过期时间的同时,创建一个定时器timer,让定时器在键过期时间来临时,立即执行对键的删除操作. 2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查 ...
- Redis的持久化机制、过期策略、淘汰策略
文章目录 一.持久化机制 1. RDB机制 2. AOF机制 RDB的优缺点 AOF的优缺点 持久化机制选择 二.过期策略 常见过期策略 Redis过期策略 1. 定期删除 2. 惰性删除 RDB对过 ...
- Redis之key的淘汰策略
Redis中有一些Key到期了,需要一些策略来处理这些过期的key, 设置到期时间的key会放入一个单独的字典中,以后会定时遍历这个这个字典来删除到期的key,除了定时遍历以外,还会使用惰性策略来删除 ...
最新文章
- 人体肠道细菌与自身细胞的比例究竟是多少?
- jquery简单使用入门
- jqGrid使用经验分享(一)——jqGrid简单使用、json格式和jsonReader介绍
- 基于树的模型的机器学习
- IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
- 安徽理工大学大学计算机科学与技术学院,2020年安徽理工大学计算机科学与技术考研经验分享...
- java连接符_使用java流将两个集合的元素与分隔符连接起来
- webpack Babel
- mysql在官网下载完解压后安装
- Python入门基础教程(非常详细)
- 使用mybatis生成UUID
- 前端页面兼容性问题学习
- 阿里面试官没想到,一个Volatile,我都能跟他吹半小时
- 复合材料计算机模拟的组成,关于复合材料层合板结构力学性能数值仿真架构的讨论...
- ORA-00600: 内部错误代码, 参数: [19004], [], [], [], [], []
- House of sprit一谈
- Ambassador系列-09-AuthService认证服务
- 前端学习笔记之流程控制语句和数组(六)
- Android尺子布局和自定义TextView
- docker--扩展学习-网络--原理--16
热门文章
- 1500页技术人的黑皮书 免费下载!
- Live预告 | 地平线李星宇:智能汽车电子构架如何变革迎接数字化重塑?
- opc在自动化控件系统的应用
- python计算ema_python – 添加一个列(EMA),它是pandas中先前新列值的结果
- cpc按点击计算怎么算_如何计算电商持平cpc,求公式?
- ESP8266 RC522
- 破解xlsm文件的VBA项目密码
- BUG克星:几款优秀的BUG跟踪管理软件
- delbug 云端BUG管理平台
- html 绘制体温单,使用zrender.js绘制体温单(2)