L03_Redis知识图谱

这些知识点你都掌握了吗?大家可以对着问题看下自己掌握程度如何?对于没掌握的知识点,大家自行网上搜索,都会有对应答案,本文不做知识点详细说明,只做简要文字或图示引导。


Redis 全景图

Redis 知识全景图都包括什么呢?简单来说,就是“两大维度,三大主线”。

Redis 问题画像

在学习和使用的过程中,你可以完善这张图,把你自己实践或掌握到的新知识点,按照“问题 --> 主线 --> 技术点”的方式梳理出来,放到这张图上。

基础篇

基本架构:一个键值数据库包含什么?


数据结构

有哪些底层数据结构

  • 3.0 版本中 List 对象的底层数据结构由「双向链表」或「压缩表列表」实现;
  • 3.2 版本之后,List 数据类型底层数据结构是由 quicklist 实现;
  • 5.0新设计,7.0 版本之后,压缩列表已废弃,由 listpack 数据结构来实现。

键和值用什么结构组织

为了实现从键到值的快速访问,Redsi 使用了一个哈希表来保存所有键值对。

  • 哈希表的冲突问题和rehash可能带来的操作阻塞**。Redis 解决哈希冲突的方式,就是渐进式 rehash**。
压缩列表


quicklist

通过控制每个链表节点中的压缩列表的大小或者元素个数,来规避连锁更新的问题。因为压缩列表元素越少或越小,连锁更新带来的影响就越小,从而提供了更好的访问性能。

quicklist 会控制 quicklistNode 结构里的压缩列表的大小或者元素个数,来规避潜在的连锁更新的风险,但是这并没有完全解决连锁更新的问题。

listpack

listpack 采用了压缩列表的很多优秀的设计,比如还是用一块连续的内存空间来紧凑地保存数据,并且为了节省内存的开销,listpack 节点会采用不同的编码方式保存不同大小的数据。
listpack 没有压缩列表中记录前一个节点长度的字段了,listpack 只记录当前节点的长度,当我们向 listpack 加入一个新元素的时候,不会影响其他节点的长度字段的变化,从而避免了压缩列表的连锁更新问题

高性能IO模型:为什么单线程的Redis能那么快?

Redis 是单线程,主要指 Redis 的网络 IO 和键值对读写是由一个线程完成的

为什么单线程就能那么快?

  • 一是Redis 大部分操作在内存上完成,并且采用了高效的数据结构;
  • 二是采用多路复用,能保证在网络IO钟可以并发处理大量的客户端请求,实现高吞吐量。

Linux 中的 IO 多路复用机制是一个线程处理多个 IO 流,就是我们经常听到的 select/epoll 机制。简单来说,**在 Redis 中值运行单线程的情况下,该机制允许内核中,同时存在多个监听套接字和已连接套接字。**内核会一直监听这些套接字上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流。

持久化:AOF日志和RDB快照

AOF 日志


优点

  • 写后日志,可以避免出现记录错误命令的情况
  • 在命令执行后才记录日志,不会阻塞当前的写操作。

风险

  • 刚执行完第一步命令就宕机了,那么这个命令和相应的数据就有丢失的风险。
  • 可能给下一个操作带来阻塞风险,因为AOF也是在主线程中执行的,如果在把日志写入磁盘时,磁盘压力大,就会导致写盘慢,进而导致后续操作无法执行。

分析发现,这两个风险都和AOF写回磁盘时机相关,这就意味着,我们如果能够控制一个写命令执行完后AOF 日志写回磁盘的时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中导入Maven项目

IDEA中导入Maven项目 方式1:使用Maven面板,快速导入项目 打开IDEA,选择右侧Maven面板,点击 号,选中对应项目的pom.xml文件,双击即可 说明:如果没有Maven面板,选择 View > Appe…

qt 开发笔记 动态链接库应用

1.概要 1.1 需求 库有两种,动态库和静态库,这里说的是动态库;动态库的加载方式有两种,一直是静态的一种是动态的,这里的静态加载是指静态加载动态,是一种加载动态库的方式。也有一种动态加载的方式&#…

打造你的第一个STM32步进电机控制器:详细教程与实战技巧

1. 引言 步进电机因其精确的位置控制和较高的响应速度,在自动化设备、3D打印机、CNC机床等领域广泛应用。本文将详细介绍如何使用STM32微控制器来控制步进电机,从理论到实践,帮助读者全面掌握这一重要技术。 STM32系列微控制器以其强大的性…

51单片机第7步_ctype.h库函数

本章重点学习ctype.h库函数。 //介绍C51库函数ctype.h的使用; #include <REG51.h> //包含头文件REG51.h,使能51内部寄存器; #include <ctype.h> //bit isalpha( unsigned char value ); //检查输入参数value是否为英文字母,若是英文字母,则返回1,若不是英文字…

Font Awesome 文件类型图标

Font Awesome 文件类型图标 Font Awesome 是一个广泛使用的图标库,它提供了大量的矢量图标,可以轻松地与各种网页和应用程序集成。这些图标涵盖了多种类别,包括文件类型图标。在本文中,我们将探讨 Font Awesome 提供的一些常见的文件类型图标,以及如何在项目中使用它们。…

探索LangChain-Chatchat 0.3:一体化Agent与强大RAG模型的全面入门指南

介绍 LangChain-Chatchat 支持RAG和Agent0.3版本跟大模型解耦,支持Xinference、Ollama、LocalAI、FastChat、One API,可以非常方便的切换各个模型,本文只是介绍XinferenceXorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 X…

数据结构速成--查找

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …

STM32CubeMx的学习记录系列(1) - 软件的下载与点灯

目录 因为最近要学STM32的嵌入式AI开发&#xff0c;但它于是基于STM32CubeMX开发的&#xff0c;就顺便把这个学了。 直接百度STM32CubeMX&#xff0c;到意法的官网去下载。下载过程就看这篇博客 https://blog.csdn.net/as480133937/article/details/98885316 点灯 选择芯片&…

内网渗透:内网基础信息收集

Windows&#xff1a; whoami:查看当前当前主机名和登录用户名 whoami /user : 打印当前主机名和输出SID ​ SID的最后一个数字&#xff1a; 1000&#xff1a;普通管理员 500&#xff1a;administrator 501&#xff1a;Guest 516&#xff1a;域控 544&#xff1a;域管理员 net…

002 SpringMVC入门项目搭建

文章目录 HelloController.javaspringmvc.xmlweb.xmlpom.xmlhello.jsp http://localhost:8080/showView http://localhost:8080/showData HelloController.java package com.springmvc.controller;import org.springframework.stereotype.Controller; import org.springframewo…

ArtTS语言基础类库内容的学习(2.10.1)

上篇回顾&#xff1a; ArkTS开发系列之Web组件的学习&#xff08;2.9&#xff09; 本篇内容&#xff1a;ArtTS语言基础类库-异步同步并发内容的学习(2.10.1&#xff09; 一、知识储备 1. 异常并发 Promise和Async/await提供异步并发能力&#xff0c;是标准的JS异步语法 Pr…

Scala的Actor模型:并发编程的革命性抽象 摘要

标题&#xff1a;Scala的Actor模型&#xff1a;并发编程的革命性抽象 摘要 Scala语言以其强大的函数式编程特性和并发模型而闻名。Actor模型作为Scala并发编程的核心&#xff0c;提供了一种高效、可靠的并行处理方式。本文将深入探讨Scala的Actor模型&#xff0c;包括其设计理…

亿发微商城:从社交流量到生意增量,拓客+变现双收益

亿发微商城提供私域经营必备的系统 、服务和技术支持等全套解决方案。省去开发成本&#xff0c;还原品牌调性&#xff0c;打通社交渠道&#xff0c;经营私域会员&#xff0c;带来传统电商和线下门店之外的生意增量。

揭秘Etched AI:三个哈佛辍学00后挑战英伟达,推出Transformer专用ASIC芯片sohu

人工智能领域最近掀起了一股新的热潮&#xff0c;三位哈佛辍学的00后本科生创建了Etched AI&#xff0c;并成功推出了一款超强AI芯片sohu&#xff0c;直指英伟达的AI芯片帝国。这款芯片被誉为比英伟达H100快20倍&#xff0c;吸引了众多科技界的关注。本文将深入探讨Etched AI及…

“实时数据大屏2k、4k、8k”这样做【高级前端必备技能之一】

&#x1f525;废话不多先上效果图 &#x1f525;划重点 新手程序员需要注意以下几点&#xff1a; 我们需要进行充分的技术调研&#xff0c;进行技术选型产品&#xff0c;UI&#xff0c;再三确认效果图是否确定&#xff0c;避免后续出现返工的情况 不能拿到效果图之后&#x…

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件&#xff08;文件大小分别为 1.7M&#xff0c;5.1M&#xff0c;3.4M&#xff0c;6.8M&#xff09; 1. 第一种情况&#xff0c;默认分片&#xff1a;不修改程序代码&#xff0c;直接使用 WordCount 源程序 2…

电脑提示vcomp140.dll丢失的几种有效的解决方法,轻松搞定dll问题

在电脑使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是找不到vcomp140.dll。那么&#xff0c;究竟什么是vcomp140.dll呢&#xff1f;为什么会出现找不到vcomp140.dll的情况呢&#xff1f;本文将从vcomp140.dll的定义、常见原因、对电脑的影响以及解…

如何理解CI/CD的概念及其在Java项目中的应用

CI/CD 是持续集成&#xff08;Continuous Integration&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment&#xff09;的缩写。它是一种现代软件开发实践&#xff0c;用于提高代码发布的频率和质量&#xff0c;确保软件系统的稳定性和一致性。通过自动化构…

19.《C语言》——【如何理解static和extern?】

&#x1f387;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

解锁iCloud的全能潜力:从新手到专家的终极指南!

在今天这个数字化日益发达的时代&#xff0c;云服务已经成为我们生活中不可或缺的一部分。苹果公司的iCloud服务&#xff0c;作为一个集成的云服务平台&#xff0c;为用户提供了数据存储、备份、同步等多样化的功能。通过本文&#xff0c;我们将深入探讨如何高效利用iCloud&…