1.4 字符串以及List底层实现

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

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

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

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

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

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

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

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


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Redis的内存优化 声明:本文内容来自《Redis开发与运维》一书第八章,如转载请声明。 Redis所有的数据都...
    meng_philip123阅读 18,958评论 2 29
  • 参考来源 Redis的内存优化 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。对于如何优化内存使用一直...
    秦汉邮侠阅读 1,316评论 0 2
  • 十年前第一次和你说晚安,我激动的失眠了一整夜,十年后的今晚和你说晚安,不再失眠,但你的头压得我胳膊好酸。----出...
    竹里er阅读 329评论 0 1
  • 只有光明磊落的做人,才能堂堂正正的走着,也才可以优雅的坐着。之前有人问我,我为什么在别人面前总是直不...
    壹風阅读 481评论 4 6
  • 今天是第一天上班,行动力中终于落实了。 希望可以接触不同的思想。
    韦芦思阅读 185评论 0 0