| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis 的过期数据会被立马删除么? -> 正文阅读 |
|
[大数据]Redis 的过期数据会被立马删除么? |
先说结论:并不会立马删除。Redis 有两种删除过期数据的策略:
该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。 从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。
所谓”狡兔死,走狗烹“,没用了就干掉,跟 35 岁就“毕业”是一个道理。 好慌…… 从 Redis 版本 7.0.0 开始:
过期与持久化? key 过期信息是用?Unix 绝对时间戳表示的。 为了让过期操作正常运行,机器之间的时间必须保证稳定同步,否则就会出现过期时间不准的情况。 比如两台时钟严重不同步的机器发生 RDB 传输, slave 的时间设置为未来的 2000 秒,假如在 master 的一个 key 设置 1000 秒存活,当 Slave 加载 RDB 的时候 key 就会认为该 key 过期(因为 slave 机器时间设置为未来的 2000 s),并不会等待 1000 s 才过期。 机器时钟不同步导致过期混乱 惰性删除惰性删除很简单,就是当有客户端的请求查询该? 比如当 Redis 收到客户端的 删除过期数据的主动权交给了每次访问请求。 该实现通过?
定期删除仅仅靠客户端访问来判断 key 是否过期才执行删除肯定不够,因为有的 key 过期了,但未来再也没人访问,这些数据要怎么删除呢? 不能让这些数据「占着茅坑不拉屎」。 所谓定期删除,也就是 Redis 默认每 1 秒运行 10 次(每 100 ms 执行一次),每次随机抽取一些设置了过期时间的 key,检查是否过期,如果发现过期了就直接删除。 注意:并不是一次运行就检查所有的库,所有的键,而是随机检查一定数量的键。 具体步骤如下: 定时删除
删除的源码? 这也就意味着在任何时候,过期 key 的最大数量等于每秒最大写入操作量除以 4。 ? 你想呀,假设 Redis 里存放了 100 w 个 key,都设置了过期时间,每隔 100 毫秒就检查 100 w 个 key,CPU 全浪费在检查过期 key 上了,Redis 也就废了。 注意了:不管是定时删除,还是惰性删除。当数据删除后, ? 这个问题问得好,答案是走内存淘汰机制。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:57:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |