美文网首页
Redis对象与数据结构

Redis对象与数据结构

作者: 林蛋鸭 | 来源:发表于2021-05-07 18:36 被阅读0次

Redis中,我们打交道最多的是对象类型,如字符串对象、列表对象等。

字符串对象使用方式比如set name "John"。而字符串对象的底层实现是一种叫简单动态字符串,即"SDS"数据结构,上述命令的键值对都是字符串对象,底层实现都是SDS。

又比如,rpush phone "apple" "huawei" "oppo"这个命令,这里的键是字符串对象,而值为列表对象,只不过列表对象包含了三个字符串对象。

这里罗列出对象与数据结构的映射

对象类型 数据结构 编码
字符串键 简单动态字符串 int、embstr、raw
列表键 链表、压缩列表 ziplist、linkedlist
哈希键 字典、压缩列表 hashtable、ziplist
集合键 整数集合、字典 intset、hashtable
有序集合键 跳跃表、压缩列表 skiplist、ziplist

这里谈谈redis为什么设计压缩列表和整数集合这样的数据结构。大家知道,redis是内存数据库,而内存是很宝贵的资源,压缩列表和整数集合是为了提升内存利用率而存在的,但相应的,它们的查询效率不高(O(N))。所以当数据元素较少时会某些对象类型会使用压缩列表和整数集合这样的底层数据结构,当数据元素较多时候转换为哈希或者跳表来提升查询效率。

注:当我们称呼一个键为"XX键",如列表键时,指的是这个数据库键对应的值为列表对象。

相关文章

  • Redis专题

    1 数据结构与对象 1.Redis数据结构与对象——简单动态字符串2.Redis数据结构与对象——哈希3.Redi...

  • Redis设计与实现-笔记(一)

    数据结构与对象 Redis的底层数据结构,了解Redis的底层数据结构有助于我们更好的运用Redis。 SDS R...

  • 01-redis数据结构与对象

    3. redis数据结构与对象 redis对外支持数据结构 字符串 (string) 字符串列表(list) 字符...

  • redis对象

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

  • 第 8 章(对象)

    Redis Object Redis 基于之前的那些数据结构创建了一个系统对象,这个系统包含字符串对象、列表对象、...

  • 1.4 字符串以及List底层实现

    Redis 并没有直接使用数据结构来构建键值对,而是基于这些数据结构创建了一个对象系统。 该对象保存与数据有关的三...

  • Redis设计与实现-笔记(二)

    数据结构与对象 跳跃表 跳跃表是有序集合的底层实现之一, 除此之外它在 Redis 中没有其他应用。 Redis ...

  • Redis源码及实战分析(一) 数据结构与对象

    根据国人黄俊宏先生建议的阅读顺序 redis源码的设计与解析这部分记录下redis的数据结构与对象 有些人觉得理论...

  • redis的设计与实现学习记录

    redis的学习分为以下几个部分 第一部分“数据结构与对象” redis里面数据库里面的每个键值对都是由对象组成的...

  • Redis 5种数据类型与11种编码方式

    1,redis核心对象结构 1)Redis object对象的数据结构,定义在src/server.h中。 2)c...

网友评论

      本文标题:Redis对象与数据结构

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