腾讯云架构师亲码“redis深度笔记”,从入门到精通,面面俱到
前言
作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。
毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。
所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华!
说明:文章限于篇幅,故只做部分展示,完整的文档 LZ 已经整理好了,需要获取这份学习笔记的小伙伴可以添加上小助手vx:bjmsb15获取
PART1:Redis深度笔记开篇
1.Redis可以用来做什么?
- 由Redis面试想到的
- Redis可以做什么?

2.Redis基础数据结构
- Redis安装
- Redis基础的数据结构
- 容器型数据结构的通用规则
- 关于Redis使用的一些思考

PART2:Redis的应用总结
1.分布式锁
- 分布式锁
- 超时问题
- 可重入性

2.延时队列
- 异步消息队列?
- 队列空了怎么办?
- 队列延迟
- 空闲连接自动断开
- 锁冲突处理
- 延时队列的实现
- 进一步优化

3.位图
- 基本使用
- 统计和查找
- 魔术指令 bitfield

4.HyperLogLog
- 使用方法
- pfadd这个pf是什么意思?
- pfmerge适合什么场合用?
- 注意事项
- HyperLogLog实现原理
- pf的内存占用为什么是12k?

5.布隆过滤器
- 布隆过滤器是什么?
- Redis中的布隆过滤器
- 布隆过滤器的基本使用
- 注意事项
- 布隆过滤器的原理
- 空间占用估计
- 实际元素超出时,误判率会怎样变化?
- 用不上Redis4.0怎么办?
- 布隆过滤器的其他应用

6.简单限流
- 如何使用Redis来实现简单限流策略?

7.漏斗限流
- Redis-Cell
- 一些思考

8.GeoHash
- 用数据库来算附近的人
- GeoHash算法
- Redis的Geo指令基本使用

9.Scan
- scan基础使用
- 字典的结构
- scan遍历顺序
- 字典扩容
- 对比扩容缩容前后的遍历顺序
- 渐进式rehash
- 更多的scan指令
- 大Key扫描

PART3:Redis的原理
1.线程IO模型
- 非阻塞IO
- 事件轮询(多路复用)
- 指令队列
- 响应队列
- 定时任务

2.通信协议
- RESP(Redis Serialization Protocol)
- 客户端->服务端
- 服务端->客户端

3.持久化
- 快照原理
- fork(多进程)
- AOF原理
- AOF重写
- fsync
- 运维
- Redis4.0混合持久化

4.管道
- Redis的消息交互
- 管道压力测试
- 深入理解管道本质

5.事务
- Redis事务的基本使用
- 原子性
- discard(丢弃)
- 优化
- Watch

6.PubSub
- 消息多播
- PubSub
- 模式订阅
- 消息结构
- PubSub缺点

7.小对象压缩
- 32bit vs 64bit
- 小对象压缩存储(ziplist)
- 内存回收机制
- 内存分配算法

8.主从同步
- CAP原理
- 最终一致
- 主从同步
- 增量同步
- 快照同步
- 增加从节点
- 无盘复制
- Wait指令

PART4:Redis集群
1.Sentinel
- 消息丢失
- Sentinel基本使用

2.Codis
- Codis分片原理
- 不同的Codis实例之间槽位关系如何同步?
- 扩容
- 自动均衡
- Codis的代价
- Codis的优点
- MGET指令的操作过程
- 架构变迁
- Codis的尴尬
- Codis的后台管理

3.Cluster
- 槽位定位算法
- 跳转
- 迁移
- 容错
- 网络抖动
- 可能下线(PFAIL-Possibly Fail)与确定下线(Fail)
- Cluster基本使用
- 槽位迁移感知
- 集群变更感知

PART5:Redis拓展
1.Stream
- 消息ID
- 消息内容
- 增删改查
- 独立消费
- 创建消费组
- 消费
- Stream消息太多怎么办?
- 消息如果忘记ACK会怎样?
- PEL如何避免消息丢失?
- Stream的高可用
- 分区Partition

http://2.Info指令
- Redis每秒执行多少次指令?
- Redis连接了多少客户端?
- Redisn内存占用多大?
- 复制积压缓存区多大?

3.再谈分布式锁
- Redlock算法
- Redlock使用场景

4.过期策略
- 过期的key集合
- 定时扫描策略
- 从库的过期策略

5.LRU
- LRU算法
- 近似LRU算法

6.懒惰删除
- Redis为什么要懒惰删除(lazy free)?
- flush
- 异步队列
- AOF Sync也很慢
- 更多异步删除点

7.优雅地使用Jedis
- 重试

8.保护Redis
- 指令安全
- 端口安全
- Lua脚本安全
- SSL代理

9.Redis安全通信
- spiped原理
- spiped使用入门

PART6:源码
1.探索字符串内部结构
- embstr vs raw
- 扩容策略

2.探索字典内部
- dict 内部结构
- 渐进式rehash
- 查找过程
- hash 函数
- hash攻击
- 扩容条件
- 缩容条件
- set的结构

3.探索压缩列表内部
- 增加元素
- 级联更新
- IntSet 小整数集合

4.探索快速列表内部
- 每个ziplist存多少元素?
- 压缩深度

5.探索跳跃列表内部结构
- 基本结构
- 查找过程
- 随机层数
- 插入过程
- 删除过程
- 更新过程
- 如果score值都一样呢?
- 元素排名是怎么算出来的?

6.探索紧凑列表内部
- 级联更新
- 取代ziplist

7.探索基数树内部
- 应用
- 结构
- 增删节点

总结
最后,我想说的是,学习并非难事,而贵在坚持,尤其是在我们参与工作之后,要继续坚持学习就更不容易了。但对于程序员来说,学习是立业之根本,如若放弃学习,被市场淘汰是迟早的事情。所以,学习更多新的知识对于自己来说才是一种更大的投资。
以上,到此结束。
相关文章:
腾讯云架构师亲码“redis深度笔记”,从入门到精通,面面俱到
前言 作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要…...
萌新应该如何开始学习走向自动化测试高薪岗位?
对于测试人员来说,不管进行功能测试还是自动化测试,还是性能测试,都是需要编写测试用例,所以我们必须先要了解清楚手工测试用例与自动化测试用例的一些特点,才能更好的开展自动化测试工作。1.1手工测试用例和自动化测试…...
-bash: pip: command not found
背景 这个错误的原因就是,我们的服务器上没有安装pip,装上就可以了,下面我们看一下centos中的解决方案 下载 wget https://bootstrap.pypa.io/get-pip.py 下载完成后如下图: 安装 安装的时候首先需要看一下自己的python是什…...
使用HTTP隧道代理,请求超过频率要怎么办?
在网上,经常会看到有人说使用隧道代理经常遇到429错误(请求超过频率),我们要如何解决这一问题呢?通常情况,优质的HTTP代理厂商隧道代理服务器采用的是高性能主机构建的动态IP代理服务器,是可以支…...
paddle 49 ODConv的可部署调整
ODConv是一种适用于轻量化模型的conv结构,可以在较少的参数下训练出多参数模型才能达到的精度,在相同的flop下可以稳定的涨2-3%个点。但是在paddle下部署ODConv动态卷积模型时会报出各种异常,导致模型无法转静态图或onnx格式(可能在pytorch下也是无法转换的)。为此研究ODC…...
C++ STL 学习之【string】
✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 The key is to keep company only with people who uplift you, whose presence calls forth your best. 关键是只与那些提升你的人在一起,…...
使用开源 MaxKey 与 APISIX 网关保护你的 API
1. Apache APISIX介绍 Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以…...
Linux之Xshell工具使用
shell简介Xshell是一个远程工具,可以远程连接linux系统 ,SSH,远程管理 Xshell来远程访问Linux系统的终端 。shell的英文含义是“壳”;它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表…...
【数据结构与算法】时间复杂度与空间复杂度
目录 一.前言 二.时间复杂度 1.概念 二.大O的渐进表示法 概念: 总结: 三.常见时间复杂度计算举例 例1 例2 例3 例4 例5.计算冒泡排序的时间复杂度 例6.二分算法的时间复杂度 例7.阶乘递归Fac的时间复杂度 例8.斐波那契递归的时间复杂度 …...
Nginx如何配置Http、Https、WS、WSS的方法步骤
这篇文章主要介绍了Nginx如何配置Http、Https、WS、WSS的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 写在前面 当今互联网领域,Nginx是使…...
【博客621】iptables -J动作总结
iptables -J动作总结 1、iptables常见动作 ACCEPTDROPREJECTLOGSNATDNATMASQUERADEREDIRECT 2、iptables常见动作用法 2-1、ACCEPT: 作用:用于接收匹配的流量,使得流量继续往后面的规则和链路去匹配 2-2、DROP 作用:用于丢弃匹…...
Chrome开发者工具:利用网络面板做性能分析
Chrome 开发者工具(简称 DevTools)是一组网页制作和调试的工具,内嵌于 Google Chrome 浏览器中。 Chrome 开发者工具有很多重要的面板,比如与性能相关的有网络面板、Performance 面板、内存面板等,与调试页面相关的有…...
SpringCloud系列(十三)[分布式搜索引擎篇] - ElasticSearch 的概念及 Centos 7 下详细安装步骤
打开淘宝, 搜索 狂飙 会出现各种价格有关狂飙的书籍, 当然也有高启强同款的孙子兵法!!! 如下图所示: 那么面对海量的数据, 如何快速且准确的找到我们想要的内容呢? 淘宝界面已经可以按照综合排序 / 销量 / 信用 / 价格等进行筛选, 是如何做到的呢? ElasticSearch 11 Elastic…...
04_Docker 镜像和仓库
04_Docker 镜像和仓库 文章目录04_Docker 镜像和仓库4.1 什么是 Docker 镜像4.2 列出 Docker 镜像4.3 拉取镜像4.4 查找镜像4.5 构建镜像4.5.1 创建 Docker Hub 账号4.5.2 用 Docker 的 commit 命令创建镜像4.5.3 用 Dockerfile 构建镜像4.5.5 基于 Dockerfile 构建新镜像4.5.5…...
postman-enterprise-API
Postman 是一个用于构建和使用 API 的 API 平台。Postman 简化了 API 生命周期的每个步骤并简化了协作,因此您可以更快地创建更好的 API。 API存储库 在一个中央平台上围绕您的所有 API 工件轻松存储、编目和协作。Postman 可以存储和管理 API 规范、文档、工作流配…...
【ESP 保姆级教程】玩转emqx MQTT篇② ——保留消息和遗嘱消息
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-18 ❤️❤️ 本篇更新记录 2023-02-18 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
开启慢查询日志方法
步骤 开启慢查询日志 SET GLOBAL slow_query_log on;SHOW VARIABLES like slow_query_log;设置时间限制 SET GLOBAL long_query_time 1; -- 单位sSHOW VARIABLES LIKE %long_query_time%;因为long_query_time参数只对新的数据库连接生效,所以还需要重启msql客户端…...
宝塔搭建实战人才求职管理系统admin前端vue源码(二)
大家好啊,我是测评君,欢迎来到web测评。 上一期给大家分享骑士cms后台端在宝塔的搭建部署方式,这套系统是前后端分离的架构,前端是用vue2开发的,还需要在本地打包手动发布上宝塔,所以本期给大家分享&#x…...
SpringMVC——基础知识
基本概念 SpringMVC是基于servlet api构造的原始web框架,全称是Spring Web MVC 而MVC的全称是Model View Controller,翻译成中文分别是“模型”,“视图”,“控制器”,这是一种软件的架构模式 Model:用来…...
论文浅尝 | SpCQL: 一个自然语言转换Cypher的语义解析数据集
笔记整理:郭爱博,国防科技大学博士论文发表会议:The 31th ACM International Conference on Information and Knowledge Management,CIKM 2022动机随着社交、电子商务、金融等行业的快速发展,现实世界编织出一张庞大而…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14
什么是 Pattern Matching(模式匹配) ❝ 模式匹配就是一种“描述式”的写法,不需要你手动判断、提取数据,而是直接描述你希望的数据结构是什么样子,系统自动判断并提取。❞ 你给的定义拆解: ✴ Instead of …...
