1.4 字符串以及List底层实现

2018-07-27  本文已影响0人  9cc222f2bb0a

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

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

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

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

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读