【《Redis深度历险》读书笔记(2)】源码(1-4):探索字符串、字典、压缩列表(ziplist)、快速列表(quicklist)内部结构

本文深入探讨Redis中五种核心数据结构:简单动态字符串(SDS)、字典(dict)、压缩列表(zipList)、小整数集合(IntSet)及快速列表(quickList)的内部实现细节。了解这些结构如何支撑Redis高性能运作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【时间】2021.11.17

【题目】【《Redis深度历险》读书笔记(2)】源码(1-4):探索字符串、字典、压缩列表(ziplist)、快速列表(quicklist)内部结构

本栏目是《Redis深度历险:核心原理和应用实践》的读书笔记。

目录

一、简介

二、一些重点图

1、SDS的结构

 2、SDS的两种编码方式

 3、dict的内部结构(包含2个HashTable)

1)dict的内部结构

2)HashTable结构

 4、zipList内部结构

 1)zipList

 2)entry结构

5、IntSet 小整数集合

6、quickList结构(zipList+LinkedList)

三、思维导图


一、简介

        本章主要主要介绍了Redis 字符串、字典、压缩列表(ziplist)、快速列表(quicklist)内部结构(底层实现)。

  • 字符串 :简单动态字符串 SDS,一个带长度信息的字节数组(冗余数组)
  • 字典(dict):包含两个HashTable的dict对象,便于进行"渐进式rehash"
  • 压缩列表(ziplist):一块连续的内存空间,元素之间紧挨着存储,没有任何冗余空隙。zset 和 set对象在元素个数较少的时候,采用压缩列表进行存储,早期List在元素个数较少时也使用zipList,较多时使用linkedList。
  • 快速列表(quicklist):Redis后期使用的List底层结构,结合了linkedList和zipList,即每个节点是zipList,节点间用双向指针串联。

二、一些重点图

1、SDS的结构

struct SDS<T> {
 T capacity; // 数组容量
 T len; // 数组长度
 byte flags; // 特殊标识位
 byte[] content; // 数组内容
}

 2、SDS的两种编码方式

其中RedisObject对象头是:

struct RedisObject {
 int4 type; // 4bits,类型
 int4 encoding; // 4bits,编码方式(底层结构)
 int24 lru; // 24bits,LRU 信息
 int32 refcount; // 4bytes,引用计数
 void *ptr; // 8bytes,对于64-bit system,对象指针
} robj;

 3、dict的内部结构(包含2个HashTable)

 1)dict的内部结构

 2)HashTable结构

 4、zipList内部结构

 1)zipList

struct ziplist<T> {
 int32 zlbytes; // 整个压缩列表占用字节数
 int32 zltail_offset; // 最后一个元素距离压缩列表起始位置的偏移量,用于快速定位到最后一个
节点
 int16 zllength; // 元素个数
 T[] entries; // 元素内容列表,挨个挨个紧凑存储
 int8 zlend; // 标志压缩列表的结束,值恒为 0xFF
}

 2)entry结构

struct entry {
 int<var> prevlen; // 前一个 entry 的字节长度(变长整型)
 int<var> encoding; // 元素类型编码
 optional byte[] content; // 元素内容
}

5、IntSet 小整数集合

6、quickList结构(zipList+LinkedList)

三、思维导图

四 、扩展阅读

1、hash算法:SipHash 算法流程​​​​​​​
2、Redis系列(六)底层数据结构之字典

3、《ziplist、linkedlist 和 quicklist 的性能对比》
4、《Redis列表对象之linkedlist(双端列表)和ziplist(压缩列表)及quicklick(快速列表)实现原理分析》​​​​​​​

内容概要:本文档详细介绍了基于MATLAB实现的无人机三维路径规划项目,核心算法采用蒙特卡罗树搜索(MCTS)。项目旨在解决无人机在复杂三维环境中自主路径规划的问题,通过MCTS的随机模拟与渐进式搜索机制,实现高效、智能化的路径规划。项目不仅考虑静态环境建模,还集成了障碍物检测与避障机制,确保无人机飞行的安全性和效率。文档涵盖了从环境准备、数据处理、算法设计与实现、模型训练与预测、性能评估到GUI界面设计的完整流程,并提供了详细的代码示例。此外,项目采用模块化设计,支持多无人机协同路径规划、动态环境实时路径重规划等未来改进方向。 适合人群:具备一定编程基础,特别是熟悉MATLAB和无人机技术的研发人员;从事无人机路径规划、智能导航系统开发的工程师;对MCTS算法感兴趣的算法研究人员。 使用场景及目标:①理解MCTS算法在三维路径规划中的应用;②掌握基于MATLAB的无人机路径规划项目开发全流程;③学习如何通过MCTS算法优化无人机在复杂环境中的飞行路径,提高飞行安全性和效率;④为后续多无人机协同规划、动态环境实时调整等高级应用打下基础。 其他说明:项目不仅提供了详细的理论解释和技术实现,还特别关注了实际应用中的挑战和解决方案。例如,通过多阶段优化与迭代增强机制提升路径质量,结合环境建模与障碍物感知保障路径安全,利用GPU加速推理提升计算效率等。此外,项目还强调了代码模块化与调试便利性,便于后续功能扩展和性能优化。项目未来改进方向包括引入深度强化学习辅助路径规划、扩展至多无人机协同路径规划、增强动态环境实时路径重规划能力等,展示了广阔的应用前景和发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值