Skip to content

Latest commit

 

History

History
21 lines (17 loc) · 2.46 KB

Redis数据结构.md

File metadata and controls

21 lines (17 loc) · 2.46 KB

Redis数据结构

关于Redis数据结构这块,还是推荐学习: RedisBook

Redis有着非常丰富的数据结构,这些数据结构可以满足非常多的应用场景, 如果对这些数据结构有一个比较清晰的认知,使用Redis也会更加得心应手。

Redis主要支持以下数据结构:

  1. String(字符串)
  2. List(双端链表)
  3. Hash(Hash字典)
  4. Set(无序集合)
  5. Sorted Set(有序集合)
数据结构 描述   实现
String 可以存储字符串,整型和浮点型等类型的数据。适合于简单的K-V数据场景。 Redis并没有使用字符数组来实现这一数据类型,而是自己定义了简单动态字符串(SDS: Simple Dynamic String)类型来实现这一数据结构。
List 既可以存储操作有序的数据,还可以当做栈来使用,它适合存储列表性质的数据。 List在Redis中使用的是双端链表和压缩列表实现的,这就解释了它为什么能在头尾操作元素。 C语言并没有双端链表的实现,所以Redis自定义了这一数据结构。
Hash Hash字典,也是关联数组,数组的每个元素都是key到value的映射,它适合存储对象这样的结构化数据。 Hash在Redis中是使用Hash字典和压缩列表实现的。
Set Set无序集合,它适合存储需要去重的元素,且有并集,交集,差集等功能在多个Set之间进行比较计算。 整数集合是Set的底层实现之一,当集合只有整型元素且元素数量不多的时候,Redis就会使用整数集合来实现Set。当新添加元素的时候,整数集合会根据新元素的类型自动扩容,并将所有元素的类型都转为与新元素一样的类型,在这个过程中,还需要保持原来的顺序不变,最后才添加新元素。
Sorted Set Sorted Set有序集合,可以看做加强版的Set。Sorted Set 与 Set不同的是,Sorted Set可以根据元素的score分数进行排序。它适合存储需要排序的不重复的元素。 Sorted Set在Redis中使用的是跳表实现的,跳表是一种有序且查询速度很快的数据结构。跳表每个节点都维持指向其他节点的指针,从而达到快速访问的目的。