Redis数据结构

Redis数据类型简介

Introduction to Redis data types

Redis支持的所有数据结构列表

  • String: 字符串;
  • List: 根据插入顺序排序的字符串元素集合,基本上是一个双向链表;
  • Set: 不重复且无序的字符串元素的集合;
  • SortedSet: 排序集,类似于Set,但每个字符串元素都与一个浮点数(称为score)相关联,元素总是按score排序,因此与Set不同,可以检索一系列元素(例如,您可能会问:给我前10个,或后10个);
  • Hash: 是由与值关联的字段组成的映射,key 和 value 都是字符串;
  • Bitmap(Bit array): 通过特殊的命令,你可以将 String 值当作一系列 bits 处理:可以设置和清除单独的 bits,数出所有设为 1 的 bits 的数量,找到最前的被设为 1 或 0 的 bit,等等
  • HyperLogLog: 用于估计Set中元素数量的的的概率数据结构;
  • Stream (Redis 5.0+): 一种更抽象的日志数据类型:就像一个日志文件一样,总是以仅追加的方式操作,Redis的stream就是一种append only的数据类型。

Redis key 的大小最大为 512MB

String

值最大的容量为 512MB.

1
2
3
4
5
6
7
8
9
> 127.0.0.1@6379 connected!
> set key value
OK
> get key
value
> set key value2 nx // 当 key 不存在时才会成功,可以利用此特性来实现分布式锁
null
> get key
value

List

Redis中List是通过链表来实现的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
> 127.0.0.1@6379 connected!
> rpush list A // 在链表尾部(右侧)插入
1
> rpush list B
2
> lpush list C // 在链表头部(左侧)插入
3
> lrange list 0 -1 // 根据索引获取元素 负数表示从尾部开始计算 e.g. -1 表示列表的最后一个元素
C
A
B
> rpush list D E F G // rpush, lpush 都支持在单个调用中插入多个元素
7
> lrange list 0 -1
C
A
B
D
E
F
G
> rpop list // 从尾部(右侧)取出数据
G
> lpop list // 从头部(左侧)取出数据
C
> lrange list 0 -1
A
B
D
E
F

Set

Redis Set 是不重复且无序的字符串集合

SortedSet

Hash

Bitmap

HyperLogLog

Stream

其他值得注意的特性

  • Pub/Sub

欢迎关注我的其它发布渠道