redis设计与实现-数据结构

作者: 求索 | 来源:发表于2020-02-27 23:57 被阅读0次
redis设计与实现-数据结构.png

redis 是基于c语言开发的高效key-value键值类型数据库。为实现高效以及其它一些功能,redis扩展了c语言的数据类型。

简单动态字符串(sds)

  • 优化长度计算,算法复杂度为O(1)。

    数据结构中添加长度变量,记录字符串的长度

  • 杜绝缓冲区溢出

重新实现字符串空间分配,引入空闲空间等概念

  • 减少修改字符串长度时所需的内存重分配次数。
  • 二进制安全。
  • 兼容部分C字符串函数。

hash

Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。

同时提供了hash冲突,rehash等功能的实现。

链表

当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时。Redis就会使用链表作为列表键的底层实现。
包括了功能如下特性

  • 双端
  • 无环
  • 多态

跳跃表

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

主要用于zset排序和集群概念中

整数集合

整数集合引入 encode、contents等概念。使用encode记录当前内容数据类型,根据实现数据类型会发生encode扩展。具体功能特性包括

  • 有序
  • 无重复
  • 数据类型可升级,不可降级

压缩列表

为节约内存开发的顺序型数据结构

  • 列表键和hash键的底层实现
  • 压缩列表可以包括多个节点,每个几点可以保护一个字节数组或整数值
  • 新增或删除节点可能引起连锁更新,但是这种操作概率并不高

相关文章

  • redis-数据结构-链表

    tips:本文参照《redis设计与实现》、《数据结构与算法》、redis源码 链表提供了高效的节点重排能力,以及...

  • Redis数据结构解析

    本文源码解析部分内容摘自《Redis设计与实现》 Redis数据结构 字符串(Strings) 列表(Lists)...

  • redis对象

    本文对redis的对象进行概述,知识来源于《redis设计与实现》 我们可知,redis的用到的主要的数据结构有简...

  • 《redis设计与实现》 读书笔记

    《redis设计与实现》 读书笔记 《redis设计与实现》 作者:黄健宏 一、前言 什么是redis:Redis...

  • redis底层数据结构

    这几天在看redis设计与实现一书,总结一下学过的知识,以备后用。 一、数据结构:redis的底层数据结构有很多种...

  • redis数据结构

    引言 从本次开始,对Redis设计与实现进行阅读及相关读书笔记的记录。Redis版本为3.0 数据结构 简单动态字...

  • Redis 五大类型的对象

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis数据库实现

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • RDB持久化

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • AOF持久化

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

网友评论

    本文标题:redis设计与实现-数据结构

    本文链接:https://www.haomeiwen.com/subject/pxjqhhtx.html