美文网首页
Redis 对象类型与编码

Redis 对象类型与编码

作者: 杰哥长得帅 | 来源:发表于2019-02-05 12:59 被阅读23次

Redis 使用对象来表示数据库中的键和值,每次 Redis 创建一个键值对时,至少会创建两个对象,一个键对象,一个值对象

Redis 每个对象都由一个 redisObject 结构表示:

类型

对象的 type 属性记录了对象的类型

对象的类型

对 Redis 数据库保存的键值来说,键总是一个字符串对象,而值可以是字符串、列表、哈希、集合或者有序集合

当对一个数据库键执行 TYPE 命令时,命令返回的结果为数据库键对应的值对象的类型

不同类型值对象的 TYPE 命令输出

编码和底层实现

对象的 ptr 指针指向对象的底层实现数据结构,而这些数据结构由对象的 encoding 属性决定

encoding 属性记录了对象所使用的编码,即该对象的底层数据结构实现

每种类型的对象都至少使用了两种不同的编码

使用 OBJECT ENCODING 命令可以查看一个数据库键的值对象的编码

OBJECT ENCODING 对不同编码的输出

通过 encoding 属性来设定对象所使用的编码,而不是为特定类型的对象关联一种固定编码,极大地提升了 Redis 的灵活性和效率。这样 Redis 可以根据不同的场景来为一个对象设置不同的编码,从而优化对象在某一场景下的效率

例如,在列表对象包含的元素较少时,Redis 使用压缩列表作为列表的底层实现:

  • 因为压缩列表比双端链表更节约内存,并且在元素数量较少时,在内存中以连续块方式保存的压缩列表比起双端链表可以更快被载入到缓存中
  • 随着元素增多,使用压缩列表保存元素的优势消失时,对象就会将底层实现转向功能更强、也更适合保存大量元素的双端链表上面

相关文章

  • Redis对象类型与数据结构

    1. 对象类型与编码 Redis的对象由redisObject结构表示: type属性表示对象的类型: encod...

  • Redis 对象类型与编码

    Redis 使用对象来表示数据库中的键和值,每次 Redis 创建一个键值对时,至少会创建两个对象,一个键对象,一...

  • [redis 源码走读] 对象(redisObject)

    redis 对象 redis 对数据的处理用对象进行管理,目前有5种类型。每种对象类型并不是用单一的编码类型实现,...

  • Redis源码学习之类型

    说明 redis内部的字符串对象,redis类型之REDIS_STRING 此种类型有三种编码方式分别为:OBJ_...

  • redis对象

    对象的类型与编码 redis使用对象来表示数据库中的键和值,每次当我们在redis的数据库中新创建一个键值对时,我...

  • 8.对象

    8.1对象的类型与编码 Redis中的每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个...

  • Redis对象与编码

    上周看完Redis设计与实现,过程结合Redis的unstable分支的源码来对照,基本对Redis的实现原理有了...

  • 07.对象

    1.简介: redis 不直接通过数据结构操作数据,通过对象操作数据。 2.对象的类型和编码: redis 通...

  • Redis对象类型和底层数据结构

    Redis对象类型(类型常量:对象名称) REDIS_STRING: 字符串对象 REDIS_LIST: ...

  • Redis对象(一) - 类型和编码

    对象 前边学习了Redis底层实现的各种数据结构, 包括SDS, list, skiplist, dict, in...

网友评论

      本文标题:Redis 对象类型与编码

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