博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis拓展篇----过期策略
阅读量:2177 次
发布时间:2019-05-01

本文共 599 字,大约阅读时间需要 1 分钟。

Redis的过期策略

Redis中的过期:Redis中所有的数据结构都可以设置过期时间,时间一到就会被自动删除。

Redis为单线程,如何保证在删除过期key时保证线上的读写不出现卡顿?

1、过期的key集合

Redis中将每个设置了过期时间的key放入一个独立的字典中,Redis会定时遍历这个字典,来删除到期的key

删除策略:主要是定时删除(集中处理)和惰性删除(零散处理)
惰性删除:在客户端访问key时查询key是否过期,过期就会删除

2、定时扫描策略

Redis默认每秒进行10次,扫描时使用的贪心策略步骤如下:

  1. 从过期字典中随机选出20个key
  2. 删除20个key中已经过期的key
  3. 如果过期的key的比例超过1/4,就重复步骤(1)
    为了保证不出现线程卡死的现象,算法中增加了扫描时间的上限,默认不会超过25ms
    注意:
    在设置redis中key的过期时间时,应该避免出现大量的key在同一时间过期,大量的key同一时间过期会导致读写卡顿。
    卡顿的另一种情况是由于在删除key时内存管理器需要频繁回收内存页,这也会产生一定的cpu消耗。
    如果必须要在同一时间删除key,应该给过期时间设置一个随机范围,即将过期时间随机化

3、从节点的过期策略

在Redis中从节点不会进行过期扫描,从节点对过期的处理是被动的,主节点在key到期时会在AOF文件里增加一条del指令,同步到所有的从节点

转载地址:http://mdfkb.baihongyu.com/

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>