码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 《Redis 设计与实现》笔记


    《Redis 设计与实现》

    📚1、数据结构与对象

    📚1.1、动态字符串 SDS

    在这里插入图片描述

    • 字符串长度获取O:len
    • 杜绝缓冲区溢出:free
    • 减少修改字符串带来的内存重新分配次数
      • 空间预分配
      • 惰性空间释放
    • 二进制安全
    • 兼容部分C字符串函数

    📚1.2、 链表

    (img-11571eOU-1656384401106)(img_01.png)]

    (img-qxws60fw-1656384401106)(img_9.png)]

    • 双端
    • 无环
    • 带头指针和尾指针
    • 带链表长度计数器
    • 多态

    📚1.3、 字典

    (img-d428NVom-1656384401106)(img_2.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FavM4COx-1656384401107)(img_3.png)]

    📚1.4、 跳跃表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dsy57Oz-1656384401107)(img_4.png)]

    • 层
    • 前进指针
    • 跨度
    • 后退指针
    • 分值和成员

    📚1.5、 整数集合

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xDo6tqqs-1656384401108)(img_5.png)]

    📚1.6、 压缩列表

    [(img-G2FwN2pR-1656384401108)(img_6.png)]

    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGv6eyCi-1656384401109)(img_8.png)]

    📚1.7、 对象

    • 字符串对象:int,raw,embstr
    • 列表对象:ziplist,linkedliost
    • 哈希对象:ziplist,hashtable
    • 集合对象:intset,hashtable,
    • 有序集合对象:ziplist,skiplist
    • 内存回收:引用计数器

    📚2、单机数据库实现

    • 过期件删除策略
      • 定时删除
      • 惰性删除
      • 定期删除
    • RDB
      • SAVE:由服务器进程执行
      • BGSAVE:由子进程执行
      • 自动间隔性保存 save 900 1 900S之内对数据库至少修改1次
    • AOF
      • 分为三步:命令追加,文件写入,文件同步
      • AOF重写
    • 事件
      • 文件事件:套接字抽象(accept,read,write,close)
        • I/O多路复用:select,epoll,evport,kqueue
      • 时间事件:定时执行

    📚3、多机数据库实现

    • PSYNC
      • 完整同步
      • 部分重同步
        • 复制偏移量
        • 复制积压缓冲区
        • 服务器运行ID
    • Sentinel
    • 集群:cluster

    📚4、独立功能的实现

    • 慢查询日志
    • 排序
    • 二进制位数组

    📚其他补充

    • 位图
    • HyperLogLog
    • 布隆过滤器
    • Redis-Cell:漏斗限流
    • GeoHash:经纬坐标,距离
    • Scan
    • Stream
    • 近似LRU:随机采样5(可设置)key,淘汰最旧的
  • 相关阅读:
    TransformerPPT使用链接
    测试用例的优化与整理:确保软件质量的关键步骤
    通过 Github Action 实现定时推送天气预报
    设计模式之访问器模式(Visitor)的C++实现
    巨控GRM530远程模块与西门子上-300PLC远程上下载程序,远程在线调试程序
    iOS 控制网络请求顺序
    OrangPi PC 安装Lakka游戏系统及使用指南
    Docker高级篇之可视化工具Portainer和CAdvisor+InfluxDB+Granfana
    Lattice Crosslink-NX器件(LIFCL-40-7MG121I)用作视频输入桥接时支持的CMOS型号及可达性能汇总
    python的opencv使用总结
  • 原文地址:https://blog.csdn.net/qq_23934475/article/details/125498050
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号