图解redis五种数据结构底层实现(动图哦)

Posted 菜刚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解redis五种数据结构底层实现(动图哦)相关的知识,希望对你有一定的参考价值。

redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗?今天我们来花费五分钟的时间了解一下。(目前redis版本为3.0.6)

动态字符串SDS

SDS是"simple dynamic string"的缩写。redis中所有场景中出现的字符串,基本都是由SDS来实现的

  • 所有非数字的key。例如 setmsg"hello world" 中的key msg.

  • 字符串数据类型的值。例如`` set msg "hello world"中的msg的值"hello wolrd"

  • 非字符串数据类型中的“字符串值”。例如 RPUSH fruits"apple""banana""cherry"中的"apple" "banana" "cherry"

SDS长这样:

free:还剩多少空间 len:字符串长度 buf:存放的字符数组

空间预分配

为减少修改字符串带来的内存重分配次数,sds采用了“一次管够”的策略:

    以上是关于图解redis五种数据结构底层实现(动图哦)的主要内容,如果未能解决你的问题,请参考以下文章

    redis五种数据结构与六种底层实现

    Redis的五种对象类型及其底层实现

    redis-02 五种类型底层数据结构

    Redis底层数据结构

    《闲扯Redis七》Redis字典结构的底层实现

    一文读懂Redis常见对象类型的底层数据结构