当前位置: 首页 > news >正文

黑马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 时间的影响。

定期删除的两种模式:

  1. SLOW模式执行频率默认为10,每次不超过25ms
  2. 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,一个是选…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...