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个。