Redis从入门到精通(三)-高阶篇

文章目录

0. 前言

欢迎来到 Redis从入门到精通博客专栏索引的第三部分!在前两部分的内容中,我们一起探索了Redis的基础知识、数据结构和常用命令等。在本专栏的第三部分,我们将继续深入研究Redis的高级功能和最佳实践。为了方便大家查看,我把之前高阶部分的文章汇集成了一个索引。大家也可以根据Redis从入门到精通的思维导图进行查看。

在之前的文章中,我们详细介绍了 Redis 中的一些底层数据结构,如简单动态字符串(SDS)、快表(QuickList)、字典(Dictionary)、整数集(IntSet)、跳表(SkipList)和链表包(listpacks)。这些底层数据结构在 Redis 中扮演着重要的角色,用于实现不同的功能和数据类型。本文将进一步详细介绍这些底层数据结构,包括它们的内部实现原理、优势以及在 Redis 中的应用。

当我们谈论 Redis 时,我们通常会讨论其用于存储和检索数据的各种数据结构。但是,这些操作必须通过一定的协议来执行,这个协议就是 Redis 协议(RESP)。RESP 是一个简单而强大的协议,设计得非常易于理解和实现,几乎可以说是目前中间件中最简单的一种协议。这也是 Redis 受到广泛欢迎的一部分原因。

Redis博客专栏思维导图
https://www.processon.com/view/link/6555e2c1c4d6c1491ae416d0

【高阶篇】3.1 Redis协议(RESP )详解

当我们谈论 Redis 时,一般来说,我们讨论的核心是它用来存储和检索数据的多种数据结构:字符串、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)和散列表(Hashes)等。但是,这些操作必须通过一定的协议来执行,这个协议就是Redis协议 (RESP, Redis Serialization Protocol)。RESP 是一个简单而强大的协议,设计得非常易于理解和实现,几乎可以说是目前中间件中最简单的一种协议。这也是 Redis 受到广泛欢迎的一部分原因。
*

【高阶篇】3.3 Redis之底层数据结构简单动态字符串(SDS)详解

Redis是一个快速、开源、内存数据库,它是一个基于键值对的存储系统,由Salvatore Sanfilippo开发。Redis支持多种数据结构,其中字符串(String)是最常用的一种数据结构之一。在Redis中,字符串是由简单动态字符串(SDS)实现的。本文将详细介绍SDS的内部实现原理、优势以及在Redis中的应用。
*

【高阶篇】3.4 Redis之底层数据结构快表QuickList详解

Redis中的快表(QuickList)是一种特殊的数据结构,用于存储一系列的连续节点,每个节点可以是一个整数或一个字节数组。快表是Redis中的底层数据结构之一,常用于存储有序集合(Sorted Set)等数据类型的底层实现。在本文中,我们将深入了解Redis中的快表,包括快表的结构和操作等。
*

【高阶篇】3.5 Redis之底层数据结构字典(Dictionary)详解

上个篇章回顾,我们上个章节,讲了Redis中的快表(QuickList),它是一种特殊的数据结构,用于存储一系列的连续节点,每个节点可以是一个整数或一个字节数组。快表是Redis中的底层数据结构之一,常用于存储有序集合(Sorted Set)等数据类型的底层实现。那么本章讲解Redis中的底层数据结构中的字典(Dictionary)也称为哈希表(Hash Table)。字典(Dictionary)是一种高效的数据结构,用于存储键值对,常用于实现哈希表。
*

【高阶篇】3.6 Redis之底层数据结构整数集(IntSet)详解

上个篇章我们从源码层了解字典是一种以键值对(key-value)形式存储数据的数据结构。在 Redis 中,字典使用哈希表来实现。哈希表是一种以常数时间复杂度 O(1) 进行插入、删除和查找的数据结构。了解到在 Redis 中,字典被广泛应用于实现哈希表和集合等数据结构。本章节,我们详细了解一下Redis底层数据结构整数集(IntSet),它是用于存储整型数据,是一种紧凑的、高效的数据结构,可以用来实现集合等功能。
*

【高阶篇】3.7 Redis之底层数据结构跳表(SkipList)

本章节,我们详细了解一下在Redis又一个底层数据结构跳表(SkipList),它是一种基于链表的数据结构,用于快速地插入、删除和查找元素。跳表通过多层级的指针数组来实现快速的操作,时间复杂度为O(log n),其中n为跳表中元素的个数。Redis中的有序集合(Sorted Set 也叫ZSet 它们讲的是同一个)就是通过跳表来实现的。。
*

【高阶篇】3.8 Redis之底层数据结构链表包(listpacks)详解

本文将Redis底层数据结构 listpacks(链表包)详解,它用于实现列表数据类型。listpacks是一种紧凑的连续内存块,其设计目标是减少内存的占用,通过紧凑的内存布局和多种数据类型的编码方式,提供了高效的插入和删除操作。| zlbytes | 4字节,列表总字节数| zltail | 4字节,列表尾节点偏移量| zllen | 2字节,列表节点数量。
*

【高阶篇】3.9 Redis之底层数据结构压缩列表(ZipList)详解

本文详细介绍了Redis中的压缩列表(ZipList),包括ZipList的结构和操作等。压缩列表是Redis中的底层数据结构之一,常用于存储列表和哈希表等数据类型的底层实现。压缩列表具有紧凑的存储结构、支持动态增加和删除节点、支持快速的节点访问和遍历等优点,但也有节点大小不固定、不支持快速的节点插入和删除操作等缺点。在实际应用中,需要根据具体的需求选择合适的数据结构来存储数据。

相关推荐
qq_2131578916 分钟前
(c#)unity中sqlite多线程同时开启事务会导致非常慢
数据库·sqlite·c#
北极无雪22 分钟前
Spring源码学习(拓展篇):SpringMVC中的异常处理
java·开发语言·数据库·学习·spring·servlet
666xiaoniuzi43 分钟前
深入理解 C 语言中的内存操作函数:memcpy、memmove、memset 和 memcmp
android·c语言·数据库
正在走向自律1 小时前
3.使用条件语句编写存储过程(3/10)
数据库·存储过程·安全架构
YONG823_API1 小时前
电商平台数据批量获取自动抓取的实现方法分享(API)
java·大数据·开发语言·数据库·爬虫·网络爬虫
小小不董1 小时前
图文深入理解Oracle DB Scheduler
linux·运维·服务器·数据库·oracle
CoderJia程序员甲2 小时前
重学SpringBoot3-集成Redis(四)之Redisson
java·spring boot·redis·缓存
大拇指的约定2 小时前
数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(三),单表查询
数据库·mysql·oracle
深山夕照深秋雨mo2 小时前
在Java中操作Redis
java·开发语言·redis
阳光阿盖尔2 小时前
redis——哨兵机制
数据库·redis·缓存·主从复制·哨兵