美文网首页
Redis-数据结构-SDS、链表

Redis-数据结构-SDS、链表

作者: 稻壳_be03 | 来源:发表于2019-06-12 20:05 被阅读0次

一、简单动态字符串 SDS(simple dynamic string)

1、redis中使用SDS作为默认字符串表示,C字符串只会作为字符串字面量使用(无须对字符串值进行修改,如打印日志)

2、定义

3、SDS与C字符串的区别

    3.1、常数复杂度获取字符串长度

            SDS在len属性中记录了字符串的长度,获取SDS长度的算法复杂度为O(1)

    3.2、杜绝缓冲区溢出

            SDS的API会自动检查空间,不需要手动分配内存,杜绝了缓冲区溢出的可能

    3.3、减少修改字符串时带来的内存重分配次数

            SDS 通过未使用空间(free属性)解除了字符串长度和底层数组长度之间的关联:buf数组的长度不一定是字符串长度+1,buf数组可以包含未使用的字节,这些字节数量由free属性记录

            SDS通过未使用空间,实现了空间预分配和惰性空间释放两种优化策略

                    3.3.1 空间预分配

            通过预分配策略,SDS将连续增长N次字符串所需内存重分配次数从必定N次降低为最多N次

                    3.3.2、惰性空间释放

                用于优化SDS字符串缩短操作,使用free属性记录释放的空间,在需要真正释放空间的使用再对buf数组进行操作

     3.4、二进制安全(支持二进制数据)

    3.5、兼容部分C字符串函数

4、

        4.1、与Java StringBuilder类对比,StringBuilder 继承抽象类 AbstractStringBuilder

二、链表

1、实现结构

        1.1、链表节点

        1.2、链表

2、特性

                2.1、双端:带有prev和next指针,获取某个节点的前置节点和后置节点的复杂度都是O(1)

                2.2、无环:表头节点的prev和表尾结点的next指针都指向NULL,对链表的方位以NULL为终点

                2.3、带有表头指针和表尾指针

                2.4、带有链表长度计数器

                2.5、多态:链表节点使用 void*指针保存节点值,可以保存各种不同类型的值

3、链表主要用于实现链表键、发布订阅、慢查询(?)、监视器(?)

相关文章

  • Redis-数据结构-SDS、链表

    一、简单动态字符串 SDS(simple dynamic string) 1、redis中使用SDS作为默认字符串...

  • 一天一道面试题——Redis篇1(Redis的数据结构和对象)

    数据结构 SDS 简单字符串 链表 linkedlist (3.2 quicklist) 字典 dict 跳跃表 ...

  • redis笔记

    redis基础知识 数据结构 底层数据结构 SDS 双向链表 压缩列表 跳跃表 Hash表 整数数组 对外数据结构...

  • redis数据结构

    redis数据结构列表:简单动态字符串(sds)链表(list)字典(dict)跳跃表(skiplist)整数集合...

  • redis系列(一):数据结构综述

    底层的数据结构 简单动态字符串 SDS 链表 list 跳表 skiplist 压缩列表 ziplist 快速列表...

  • redis基本数据结构

    redis 基本数据结构. redis的基本数据结构主要有: SDS动态字符串,链表,字典,哈希表,跳跃表,整数集...

  • Redis 对象

    前面已经介绍了 SDS,双端链表,字典,整数集合,压缩列表等数据结构,但是Redis 并没有直接使用这些数据结构来...

  • redis-数据结构-链表

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

  • Redis学习笔记(六) 对象

    前面我们看了Redis用到的主要数据结构,如简单动态字符串(SDS)、双向链表、字典、压缩列表、整数集合等。 但是...

  • Redis-数据结构-对象

    对象 redis没有直接使用SDS、链表、字典、压缩列表、整数集合等数据结构来实现 键值对数据库,而是基于这些数...

网友评论

      本文标题:Redis-数据结构-SDS、链表

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