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

redis 从0到1完整学习 (九):SkipList 数据结构

文章目录

  • 1. 引言
  • 2. redis 源码下载
  • 3. skipList 数据结构
  • 4. 参考


1. 引言

前情提要:
《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》
《redis 从0到1完整学习 (四):字符串 SDS 数据结构》
《redis 从0到1完整学习 (五):集合 IntSet 数据结构》
《redis 从0到1完整学习 (六):Hash 表数据结构》
《redis 从0到1完整学习 (七):ZipList 数据结构》
《redis 从0到1完整学习 (八):QuickList 数据结构》

本文主要结合源码来介绍 SkipList 的数据结构

2. redis 源码下载

Redis 源码可以点击这里下载,方便查看其中定义的一些数据结构。
在这里插入图片描述

3. skipList 数据结构

跳跃表(SkipList)是一种有序数结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。

Redis 使用 skipList 作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis 就会使用 skipList 来为有序集合键的底层实现。

如图是 skipList 的示意图,本质上是用空间换时间,跳表详细的可以参考这里

在这里插入图片描述

数据结构如下:
在这里插入图片描述

  • skipList 是一个双向链表,每个节点都包含 score和 ele 值
  • 节点按照 score 值排序,score 值一样则按照 ele 字典排序
  • 层级越高,节点的跨度越大

结合上面数据结构,Redis 的 skipList 组织如下:
在这里插入图片描述

4. 参考

《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》
《redis 从0到1完整学习 (四):字符串 SDS 数据结构》
《redis 从0到1完整学习 (五):集合 IntSet 数据结构》
《redis 从0到1完整学习 (六):Hash 表数据结构》
《redis 从0到1完整学习 (七):ZipList 数据结构》
《redis 从0到1完整学习 (八):QuickList 数据结构》

http://www.lryc.cn/news/267881.html

相关文章:

  • 智能优化算法应用:基于金豺算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Isaac Sim 仿真机器人urdf文件导入
  • Python 实现Excel和CSV之间的相互转换
  • 【GitHub精选项目】短信系统测试工具:SMSBoom 操作指南
  • 【Filament】立方体贴图(6张图)
  • SpringBoot 3.2.0 结合Redisson接入Redis
  • C++ 比C语言增加的新特性 5 之字符串string
  • 【第2讲】原理介绍和权限开通
  • C++ opencv-3.4.1 提取不规则物体的轮廓
  • ServletConfig对象.
  • jQuery实现框里画面的展开、收起和停止
  • less 查看文本时,提示may be a binary file.See it anyway?
  • H266/VVC帧内预测编码技术概述
  • 重组蛋白表达系统的比较-卡梅德生物
  • 【Java、Python】获取电脑当前网络IP进行位置获取(附源码)
  • 接口测试学习笔记
  • 一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)
  • [PyTorch][chapter 8][李宏毅深度学习][DNN 训练技巧]
  • Nginx快速入门:实现企业安全防护|nginx部署https,ssl证书(七)
  • 将Go语言开发的Web程序部署到K8S
  • Python发送数据到Unity实现
  • Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)
  • 【论文笔记】Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
  • python常用函数汇总
  • 阶段十-物业项目
  • 使用 Jekyll 构建你的网站 - 初入门
  • 【数据库】postgressql设置数据库执行超时时间
  • SQL语言之DDL
  • hive高级查询(2)
  • golang的jwt学习笔记