美文网首页
1.4 字符串以及List底层实现

1.4 字符串以及List底层实现

作者: 9cc222f2bb0a | 来源:发表于2018-07-27 21:17 被阅读0次

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

该对象保存与数据有关的三个属性分别是:type(类型),encoding(编码类型)以及ptr(指向底层实现数据结构的指针)

1. 如果字符串对象保存的是一个字符串值,并且长度小于等于32字节,那么字符串对象将使用embstr编码的方式来保存(优势:两次空间分配变为一次),但是embstr类型只是只读的,所有修改是需要转换为raw类型。

2. 如果是浮点数,将会变成字符串保存。

3. 字符串对象是唯一一种会被其他四种类型对象嵌套的对象。

4. 当列表对象同时满足以下两个条件时,使用ziplist进行编码,不同时满足时使用linkedlist编码:

    1. 列表对象保存的所有元素长度都小于64字节

    2. 列表对象保存的元素数量少于512个。

相关文章

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

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

  • 2018-08-08

    java集合类的底层实现 LinkedList底层实现和原理 LinkedList类是List接口的实现类,它是一...

  • LinkedList 底层分析

    LinkedList 底层分析 如图所示 LinkedList 底层是基于双向链表实现的,也是实现了 List 接...

  • LinkedList 底层分析

    LinkedList 底层分析 如图所示 LinkedList 底层是基于双向链表实现的,也是实现了 List 接...

  • java8 LinkedList 源码解析

    LinkedList是另外一种常见的list实现类,底层基于链表实现,不仅实现了List接口,还是实现了Deq...

  • 8. Python之基本数据类型详解-2

    1 List 1.1 作用 1.2 定义 1.3 类型转换 字符串 字典 1.4 内置方法 按照索引取,改值(正向...

  • 容器-02-16

    container包括List, Set,Map List 有序可重复:ArrayList:底层数组实现,查询快,...

  • list.clear()与list = null 区别

    一 . list.clear()底层源码实现 在使用list 结合的时候习惯了 list=null ;在创建这样的...

  • Java中的ArrayList

    一、概述 ArrayList底层使用的是数组。是List的可变数组实现,这里的可变是针对List而言,而不是底层数...

  • 2018-08-08

    Java集合类的底层实现 Vector底层实现和原理 Vector作为List的另外一个典型实现类,完全支持Lis...

网友评论

      本文标题:1.4 字符串以及List底层实现

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