码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis过期key的删除及淘汰机制


    目录

    一、Redis过期key的删除

    1.Redis的key生存期到了会立即删除吗?

    2.定期删除

    3.惰性删除

    二、Redis的淘汰机制

    1.为什么任何一个缓存机制都是有淘汰机制的?

    2.淘汰机制的类型

    (1)LRU:最近最少使用淘汰算法。(一个时间段内用的最少的)

    (3)FIFO:最先写入淘汰 

    3.Redis的淘汰机制什么时候触发?

    4.Redis的淘汰机制


    一、Redis过期key的删除

    1.Redis的key生存期到了会立即删除吗?

    不一定。因为当如果有大量key同时过期,那么Redis都去删除这些key的话,那么需要消耗很大的性能,那么对于我们数据缓存的的性能就有影响,所以Redis有两种删除过期key的策略

    2.定期删除

    Redis每隔一段时间就会去查看设置了过期时间的key,并且在100ms的间隔中默认查看三个key

    3.惰性删除

    如果查询了一个过期的key,Redis会看这个key的生存时间是否到了,如果到了那么Redis会把这个key删除,返回一个空值

    通过这些策略就不会导致大批量的去删除过期的key,浪费Redis过多的性能

    二、Redis的淘汰机制

    任何一个缓存机制都是有淘汰机制的

    1.为什么任何一个缓存机制都是有淘汰机制的?

    因为缓存的数据是存在于内存当中的,内存相比于磁盘的IO读写速度会更快,所以我们使用缓存就是为了提高查询效率,但是内存是有一个上限的,内存资源也是比较珍贵的,所以内存要及时清理“冷数据”释放更多的内存空间出来存储“热数据”

    淘汰机制就是对“冷数据”进行清理的一种策略

    2.淘汰机制的类型

    (1)LRU:最近最少使用淘汰算法。(一个时间段内用的最少的)

    LRU算法的基本思想是,如果一个数据在最近一段时间内没有被访问,那么它在将来也很可能不会被访问,因此可以优先淘汰这部分数据。

    实现:

    LRU算法的实现通常依赖于数据结构,最常见的是使用一个双向链表(Doubly Linked List)和一个哈希表(Hash Map)的结合来实现

    双向链表维护数据访问时间,哈希表维护数据在链表中的位置

    (2)LFU:最不经常使用淘汰使用算法。(整个时间期用的最少的)

    淘汰被访问频率最低的数据项

    实现:

    1. 频率表(Frequency Table): 用于记录每个数据项的访问频率。可以是一个哈希表,其中键是数据项,值是对应的访问频率。

    2. 最小堆(Min Heap): 用于维护数据项和对应访问频率的关系,堆顶元素是访问频率最低的数据项。

    (3)FIFO:最先写入淘汰 

    最先进入缓存的数据最先被淘汰

    (4)RANDOM:随机淘汰

    3.Redis的淘汰机制什么时候触发?

    当内存不足的时候就会触发淘汰机制

    4.Redis的淘汰机制

  • 相关阅读:
    Mybatis
    基于SDN技术构建多平面业务承载网络
    Linux ps指令介绍
    二十一、操作系统设计(POSIX;Windows API;Micro/Exo/Unikernel)
    垃圾回收 - 分代垃圾回收
    剪贴板劫持--PasteJacker的安装
    做人力资源选择小公司or大公司?看完这篇再做决定
    Friend.tech(FT):社交媒体金融的未来,真的如此美好吗?
    golang里面关于map[string]interface{}取值问题
    深度学习(小土堆)
  • 原文地址:https://blog.csdn.net/qq_66013742/article/details/134417554
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号