黑马Redis原理篇
黑马Redis原理篇
- 1、数据结构
- 1.1、动态字符串SDS
- 1.2、IntSet
- 1.3、Dict
- 1.4、ZipList
- 1.5、QuickList
- 1.6、SkipList
- 1.7、RedisObject
- 1.8、五种数据结构
- 1. String(小EMBSTR,大RAW (SDS),少量整数INT)
- 2. List(Redis3.2之后使用QuickList实现)
- 3. Set(少量整数IntSet,正常采用Dict,元素存在key中,value为null)
- 4. ZSet(少量数据使用ZipList,使用Dict和SkipList)
- 5. Hash(少量数据ZipList,大量数据Dict)
- 2、网络模型
- 2.1、用户空间和内核空间
- 2.2、阻塞IO
- 2.3、非阻塞IO
- 2.4、IO多路复用
- 2.4.1 Linux中的I/O多路复用
- 2.4.1 epoll中的事件通知机制
- 2.5、信号驱动IO
- 2.6、异步IO
- IO操作同步异步总结(重要)
- 2.7、Redis网络模型(I/O多路复用+事件派发)
- 3、通信协议
- 3.1、RESP协议
- 4、内存策略
- 4.1、过期策略
- 4.2、淘汰策略
1、数据结构
1.1、动态字符串SDS
Redis是基于C语言实现的。



1.2、IntSet




1.3、Dict


渐近式rehash:


1.4、ZipList




1.5、QuickList


1.6、SkipList


1.7、RedisObject



1.8、五种数据结构
1. String(小EMBSTR,大RAW (SDS),少量整数INT)


2. List(Redis3.2之后使用QuickList实现)

3. Set(少量整数IntSet,正常采用Dict,元素存在key中,value为null)

4. ZSet(少量数据使用ZipList,使用Dict和SkipList)


5. Hash(少量数据ZipList,大量数据Dict)

2、网络模型
2.1、用户空间和内核空间


2.2、阻塞IO

2.3、非阻塞IO

2.4、IO多路复用
2.4.1 Linux中的I/O多路复用



2.4.1 epoll中的事件通知机制


2.5、信号驱动IO

2.6、异步IO

IO操作同步异步总结(重要)

2.7、Redis网络模型(I/O多路复用+事件派发)



3、通信协议
3.1、RESP协议


4、内存策略
4.1、过期策略

Redis 通过一个叫做过期字典(可以看作是 hash 表)来保存数据过期的时间。
惰性删除:不是在TTL到期后就立刻删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。
定期删除:每隔一段时间抽取一批 key 执行删除过期 key 操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。
定期删除的两种模式:
- SLOW模式执行频率默认为10,每次不超过25ms
- FAST模式执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms

4.2、淘汰策略
内存淘汰:就是当Redis内存使用达到设置的上限时,主动挑选部分key删除以释放更多内存的流程。Redis会在处理客户端命令的方法processCommand()中尝试做内存淘汰

相关文章:
黑马Redis原理篇
黑马Redis原理篇 1、数据结构1.1、动态字符串SDS1.2、IntSet1.3、Dict1.4、ZipList1.5、QuickList1.6、SkipList1.7、RedisObject1.8、五种数据结构1. String(小EMBSTR,大RAW (SDS),少量整数INT)2. List(Redis3.2之后使用QuickList实现&#…...
Sql Server增加字段、修改字段、修改类型、修改默认值
1、修改字段名: alter table 表名 rename column A to B 2、修改字段类型: alter table 表名 alter column 字段名 type not null 3、修改字段默认值 alter table 表名 add default (0) for 字段名 with values 如果字段有默认值,则需要…...
计算机网络第一章(谢希仁第8版学习)
作者:爱塔居 专栏:计算机网络 作者简介:大三学生,希望和大家一起加油 文章目录 目录 文章目录 一、网络、互连网、互联网(因特网)的概念 二、因特网的组成 三、交换方式 3.1 电路交换 3.2 分组交换 3.3 电路…...
Java反射机制
文章目录 Java反射机制一、反射的用处二、获取字节码文件对象的三种方式1.Class.forName形式2.class属性获取形式3.Student对象获取形式 三、获取构造方法四、获取成员变量五、获取成员方法六、反射的好处(面试题)七、反射的实例1.泛型擦除2.修改字符串的…...
New:dbForge Edge 2023 4in1 Enterprise Edition Crack
dbForge Edge 2023 4in1 Enterprise Edition 赋予自己开发和管理 SQL Server、MySQL、Oracle 和 PostgreSQL 数据库的广泛能力 dbForge Edge:您的终极多数据库解决方案 让我们来看看。您需要处理多个数据库管理系统。同时,您希望能够灵活有效地处理范围广…...
基于高效率IP路由查找的内容
访问【WRITE-BUG数字空间】_[内附完整源码和文档] 实现最基本的前缀树查找,调研并实现某种IP前缀查找方案,- 基于forwarding-table.txt数据集(Network, Prefix Length, Port) - 本实验只考虑静态数据集,不考虑表的添加或更新- 以前缀树查找结果为基准,检…...
【VLAN如何划分?6个方法帮你解决!好用又简单!】
如何选择交换机?如何根据项目确定网络结构?交换机做为大家工作中最常用的设备之一,关于它的选择,不得不知。 在做项目时都有这样的疑问,因为参数决定了项目预算,常用的园区组网技术也是多种多样。 我们来…...
网络通信概述 -了解网络编程,什么是ip和端口,url
网络:网络就是一种辅助双方或者多方能够连接到一起的工具。 左:单机游戏(无网络) 右:网络游戏 网络编程:网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。…...
【Windows线程开发】Windows线程同步技术
我们在上一章节中讲解了关于Windows的线程基础,相信大家已经对线程有了基本的概念。这一章节中,我们来讲讲线程同步技术,包括加锁技术(原子锁和互斥体)和事件,信号量。 文章目录 一.原子锁二.互斥体三.事件…...
【数据结构与算法】- 期末考试
课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…...
股票?看我用python采集数据制作成交量图表
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 开发环境 & 第三方模块: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requests: pip install requests 爬虫 pyecharts: pip install pyecharts 数据分析 pandas: pip install pandas 数据分析 基本流…...
C++中的多态,以及多态的实现、以及实现多态的两个特例。
一、 多态是什么? 通俗点说,就是多种形态。具体点就是不同对象完成某种事情,会产生不一样的状态。 举个例子:就好比:买票的时候,普通人、学生、军人等等,他们买票有不同的结果,普通人…...
ESP32-C2系列开发板简介
C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…...
AI在狂飙,ChatGPT-4可直接在iPhone上使用啦
今天凌晨,OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app,瞬间冲上苹果商店免费榜第二名,效率榜第一名。 于是兴致勃勃的去下载体验了一番。整体不错,以后手机使用官方的 ChatGPT 更方便啦!而且使用 GPT4 不再麻…...
【计算机操作系统学习资源汇总】
引言 做优秀资源的搬运工!阅读经典,传承经典! 每个人的水平和理解不同,因此总结的水平也不同,推荐阅读一手资源,有时间尽量啃书。 发现好的资源会持续更新… 看书的一点小建议 1. 《深入理解计算机系统》…...
吴恩达 x OpenAI Prompt Engineering教程中文笔记
Datawhale干货 作者:刘俊君,Datawhale成员 完整课程:《吴恩达ChatGPT最新课程》 🐳Reasons & Importance Important for research, discoveries, and advancement 对研究、发现和进步很重要 Accelerate the scientific resea…...
Everypixel: AI图片搜索引擎
【产品介绍】 Everypixel是一个基于人工智能的图片搜索引擎。可以搜索超过 50 个图片来源的优质的授权图库版权素材图片,还可以使用免费图案功能,找到适合自己需求的可定制无缝图案。 Everypixel利用深度学习和计算机视觉技术,为客户提供先进…...
IOS新建应用
一:Application App。普通app。Document App。打开是记事本类似App。Game。新建游戏相关app。RealityKit为新建一个打开摄像机,一个Ar立方体的应用。 SenceKit为有一架飞机旋转的游戏App。 SpirteKit为一个手指头按上会出一个手指特效的应用。 Metal为一…...
CMake学习笔记:搜索第三方库及头文件路径 find_package()命令
1、find_package命令基本介绍 在实际开发过程中,经常不可避免的会使用到第三方开源库,这些开源库可能是通过apt-get install 命令自动安装到系统目录,也可能是由我们自己下载库的源码然后通过编译安装到指定目录的。 不管哪种方式安装的库文…...
Vue3-黑马(一)
目录: (1)vue3-基础-环境准备 (2)vue3-基础-入门案例 (3)vue3-基础-main.ts (1)vue3-基础-环境准备 vue3的技术选型,它提供了两套API,一个是选…...
Video2X专业级AI视频增强实战指南:GPU加速无损放大的深度技术解析
Video2X专业级AI视频增强实战指南:GPU加速无损放大的深度技术解析 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trendi…...
如何永久保存微信聊天记录?WeChatMsg数据管理工具完全指南
如何永久保存微信聊天记录?WeChatMsg数据管理工具完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...
KMS智能激活工具:如何一键永久激活Windows和Office的完整指南
KMS智能激活工具:如何一键永久激活Windows和Office的完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office激活问题而烦恼吗?每次系统重装后都要…...
一、[特殊字符]️ 误拦噩梦:护栏上线后的真实反弹
一、🛡️ 误拦噩梦:护栏上线后的真实反弹 不少团队在 LLM 推理服务中部署输入护栏后,遇到的第一个生产事故不是攻击漏过,而是正常请求被大规模误拦。某医疗平台上线正则输入过滤后,用户咨询“心绞痛的症状”被拦截&…...
MySQL 分区表实战:大表治理的利器与陷阱
开场白 分区表这个东西,我之前一直觉得就是个语法糖,直到有一次运维一张 2 亿行的日志表,查询慢到飞起,索引也建不动了,才认真研究分区表。结果发现分区表确实好用,但坑也不少——分区键选错了、分区裁剪没…...
剖析爆炸事故失联成因,UWB穿戴模式隐患重重,无感定位筑牢矿山透明化空间管理根基
剖析爆炸事故失联成因,UWB穿戴模式隐患重重,无感定位筑牢矿山透明化空间管理根基一、爆炸事故深度溯源:井下人员大面积失联核心诱因矿山瓦斯爆炸突发灾害,瞬间伴随剧烈冲击、粉尘弥漫、巷道形变、线路损毁与人员紧急避险疏散&…...
机器学习预测细菌耐药性:从全基因组数据到公共卫生预警
1. 项目概述与核心价值抗菌药物耐药性(AMR)这事儿,现在谁提起来都头疼。它不再是实验室报告上的一个数字,而是直接关系到我们每个人生病了还有没有药可用的现实问题。弯曲杆菌,这个听起来有点拗口的名字,其…...
ComfyUI-Manager终极指南:如何快速安装和管理ComfyUI自定义节点
ComfyUI-Manager终极指南:如何快速安装和管理ComfyUI自定义节点 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable vari…...
Qwen2.5-14B-Instruct技术选型指南:企业级大语言模型架构评估与部署策略
Qwen2.5-14B-Instruct技术选型指南:企业级大语言模型架构评估与部署策略 【免费下载链接】Qwen2.5-14B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/Qwen2.5-14B-Instruct 在人工智能技术快速发展的今天,Qwen2.5-14B-Inst…...
浔川代码编辑器 v4.1.0 正式版重磅上线!AI 加持,轻量高效,开箱即用
浔川代码编辑器 v4.1.0 正式版重磅上线!AI 加持,轻量高效,开箱即用基于 Python Tkinter SQLite3 深度打磨,浔川代码编辑器 v4.1.0 正式版今日全面发布!本次迭代全面整合内测优化成果,AI 助手、在线运行、…...
