概述
Redis底层有六种数据类型包括:简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。这六种数据结构五大数据类型关系如下:
- String:简单动态字符串
- List:双向链表、压缩列表
- Hash:压缩列表、哈希表
- Sorted Set:压缩列表、跳表
- Set:哈希表、整数数组
数据类型和底层数据结构对应关系
每种数据结构特性不一样,操作时间也不一样。
数据结构的时间复杂度
二、数据结构
从上述图中可以知道,Redis的底层数据结构由简单动态字符串、双向链表、压缩列表、哈希表、跳表、整数数组组成,其中哈希表和整数数组基本上大家都很熟悉了,下面重点介绍一下其余的几种数据结构。
1、简单动态字符串(SDS)
结构:alloc,len,buf
简单动态字符串结构
buf:字节数组,保存实际数据。为了表示字节数组的结束,Redis 会自动在数组最后加一个“\0”,这就会额外占用 1 个字节的开销。
len:占 4 个字节,表示 buf 的已用长度。
alloc:也占个 4 字节,表示 buf 的实际分配长度,一般大于 len。
那么SDS与C字