Redis之key的过期策略
1.前言
redis作为一种非关系性数据库,常用来做缓存,不妨来了解下其key的过期策略。
过期字典:reids将所有过期的键值都放在一个字典中,而这个字典就叫做过期字典。
键空间:服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中redisDb结构的dict字典保存了数据库中的所有键值对,将这个字典称为键空间。
2.过期策略
| 策略 | 概述 |
| 定期删除 |
每隔一段时间就对一些key进行检查,然后删除这些过期的key。其有两种模式: slow模式:定时执任务,默认执行频率10hz(10次/s),每次不超过25ms fast模式:执行频率不固定,但两次间隔的时间不低于2ms,每次耗时不超过1ms |
| 惰性删除 | 服务端不主动删除,当客户端在获取某个 key时,redis 会检查一下这个key是否过期?如果过期就会删除并返回null |
当然,默认采用的是 定期删除+惰性删除。即使如此,还是会出现一种情况,若定期删除漏掉了很多过期key,而客户端又没有去获取这些key,那么这些大量的过期key就会造成内存耗尽,岂不是凉凉?
不怕,此时reids会走内存淘汰机制。目前最常用的是allkeys-lru,当内存不足以容纳新写入数据时,从键空间中移除最近最少使用的 key。
Redis之key的过期策略的更多相关文章
- redis中key的过期键删除策略
Redis过期键删除策略 Redis key过期的方式有三种: 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key 主动删除:由于惰性删除策略无法保证冷数据被及时删 ...
- PHP 面试官问:你说说Redis的几个过期策略?
在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期.当设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的. 设置过期时间 expire ke ...
- redis 下key的过期时间详解 :expire
memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间.但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和me ...
- redis持久化机制与过期策略
RDB的持久化策略 (快照方式,默认持久化方式): 按照规则定时将内存中的数据同步到磁盘,它有以下4个触发场景. 1. 自己配置的快照规则 vim /redis/bin/ redis.conf:按照 ...
- Redis之key的淘汰策略
淘汰策略概述 redis作为缓存使用时,在添加新数据的同时自动清理旧的数据.这种行为在开发者社区众所周知,也是流行的memcached系统的默认行为. redis中使用的LRU淘汰算法是一种近似LRU ...
- spring boot 实现redis 的key的过期监听,执行自己的业务
最近几天进一步了解了一下redis,发现了key的过期监听功能,实现方式如下: 在redis的配置文件 redis.conf 中找到"EVENT NOTIFICATION"模块, ...
- Redis设置Key的过期时间 – EXPIRE命令
EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 操作key对生存时间的影响 生存时间可以通过使用 DEL 命令来删除整个 ...
- redis过期策略和内存淘汰机制
目录 常见的删除策略 redis使用的过期策略:定期删除+惰性删除 定期删除 惰性删除 为什么要采用定期删除+惰性删除2种策略呢? redis内存淘汰机制 常见的删除策略 1.定时删除:在设置键的过期 ...
- [redis] -- 过期策略篇
过期处理 定期删除 redis默认是每隔 100ms 就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除 惰性删除 定期删除可能会导致很多过期 key 到了时间并没有被删除掉.所以就 ...
- redis 过期策略你知道多少,看完文章你会不自觉说喔哦
Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除.你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割. 你还可以进一步站在死神的角度 ...
随机推荐
- Day2 备战CCF-CSP练习
Day2 题目描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项. 每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔. 这些字符串中的第一个为该命令行工具的名字,由小写字母组成 ...
- POLIR-Society-Organization-Politics: “How”-政治的: Versatility+历史+应然+实然:零食“脱氢乙酸钠”:"衣食住行|生育工作挣钱用钱|"
POLIR-Society-Organization-Politics: "How"-政治的: Versatility+历史+应然+实然:人民群众的"衣食住行|生育工作挣 ...
- SciTech-Mathmatics-Probability+Statistics-数学专业社区(math.stackexchange.com/questions) + examples of "a set of distributions indexed by a parameter"
Sampling Distribution Could some give an examples of "a set of distributions indexed by a param ...
- win11专业版微软账户登录不上的问题
有不少雨林木风系统的小伙伴,都知道win11系统是支持微软账户和本地账户两种登录方式,选择微软账户登录,可以同步edge浏览器记录和xbox游戏数据,有官方正版win11系统用户说他的win11系统里 ...
- 深度分析:Win11 22454新预览版又有什么变化?
起了一大早,深度技术小编又看到微软官方面向Insider会员推送两个预览版,分别是Dev通道的Build 22454,Beta和Release Preview通道的Build 22000.184. 其 ...
- Win11纯净版电脑开机就死机到问题
有电脑基地的用户说他升级更新win11纯净版系统,用了一段时间以后,不知道咋了,突然发现电脑开机就死机了,怎么都进不去系统,那这个问题要如何解决呢?其实,这可能是因为我们安装的应用程序出现冲突,或是驱 ...
- ugui生成雷达图
网上找了下没啥好的代码,自己结合资料优化了下,支持创建任意边数的雷达图 原理是采用CanvasRender创建Mesh using System.Collections; using System.C ...
- vagrant 学习笔记-------(使用 putty 连接 vagrant 创建的虚拟机)
vagrant 的安装步骤可以参照如下网页:https://www.yuque.com/wukong-zorrm/xmk0v0/ct7lzoggzsli227t 使用 vagrant 创建虚拟机: 方 ...
- InnoDB为什么不用跳表,Redis为什么不用B+树?
要回答为什么 InnoDB(MySQL 的存储引擎) 使用 B+ 树而不是跳表(Skip List),以及为什么 Redis 使用跳表而不是 B+ 树,需要分析两者的数据结构特性.使用场景和设计目标. ...
- MyEMS开源能源管理系统核心代码解读017
MyEMS开源能源管理系统适用于建筑.工厂.商场.医院.园区的电.水.气等能源数据采集.分析.报表,还有光伏.储能.充电桩.微电网.设备控制.故障诊断.工单管理.人工智能优化等可选功能.资深专业团队开 ...