Redis(三):常见数据类型:List、Set、Zset

List 列表

列表类型是用来存储多个有序的字符串,

如图:

Redis(三):常见数据类型:List、Set、Zset_第1张图片

a、b、c、d、e 五个元素从左到右组成 了⼀个有序的列表,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个元素。在 Redis 中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、 获取指定索引下标的元素等
列表是⼀种⽐较灵活的数据结构,它可以充当栈和队列的⻆⾊,在实际开发上有很多应⽤场景

Redis列表(Lists)类型的特点如下:

  1. 有序性:Redis列表是按照插入顺序来保存元素的。

  2. 可重复性:Redis列表中的元素可以重复。

  3. 长度可变性:Redis列表可以动态增长和缩小,可以随时添加或删除元素。

  4. 支持左右两端插入和删除操作:Redis列表提供了从左端或右端插入和删除元素的操作,可以方便地实现队列和栈。

  5. 支持范围操作:Redis列表提供了类似于数组的下标范围操作,可以获取指定范围内的元素。

  6. 适合存储有序数据:Redis列表适合存储有序数据,如消息队列、最新消息列表、日志记录等。

总之,Redis列表是一种非常灵活的数据结构,可以用于各种不同的场景,具有很高的实用价值。

Redis基本命令:

  1. LPUSH key value1 [value2 ...] - 在列表左边插入一个或多个元素
  2. RPUSH key value1 [value2 ...] - 在列表右边插入一个或多个元素
  3. LPOP key - 移除并返回列表最左边的元素
  4. RPOP key - 移除并返回列表最右边的元素
  5. LINDEX key index - 返回列表中指定索引位置的元素
  6. LLEN key - 返回列表的长度
  7. LRANGE key start stop - 返回列表中指定范围内的元素
  8. LREM key count value - 移除列表中指定数量的元素
  9. LTRIM key start stop - 保留列表中指定范围内的元素,其它元素均被删除
  10. BLPOP key [key ...] timeout - 阻塞并等待列表最左边的元素,并在超时时间内返回结果
  11. BRPOP key [key ...] timeout - 阻塞并等待列表最右边的元素,并在超时时间内返回结果

从这里我们可以发现,每个基本类型中基本命令开头必带有类型的首字母,但是在 List 中发现首字母不仅只有 L 还有 R;

原因在于: list 是一个双向链表,既可以头插头删,也可以尾插尾删;

L 代表 Left         R 代表 Right 

不只是 L 和 R ;这里居然还有 B 开头的。

 这是我自己记的笔记:百度网盘 ,可以查看命令比较具体的细节

BLPOP:

B 代表 Block 阻塞,L 表示 Left ,这个命令就意味着:阻塞并等待列表最左边的元素,并在超时时间内返回结果

返回值为:取出的元素或者 nil。

内部编码

列表类型的内部编码有两种:

  1. ziplist(压缩列表):当列表的元素个数⼩于 list-max-ziplist-entries 配置(默认 512 个),同时列表中每个元素的⻓度都⼩于 list-max-ziplist-value 配置(默认 64 字节)时,Redis 会选⽤ziplist 来作为列表的内部编码实现来减少内存消耗
  2. linkedlist(链表):当列表类型⽆法满⾜ ziplist 的条件时,Redis 会使⽤ linkedlist 作为列表的内部实现。

当元素个数较少并没有大元素时,内部编码为 ziplist:

1  127.0.0.1:6379> rpush listkey e1 e2 e3
2  OK
3  127.0.0.1:6379> object encoding listkey
4  "ziplist"
当元素个数超过 512 时,内部编码为 linkedlist:
1  127.0.0.1:6379> rpush listkey e1 e2 e3 ... 省略 e512 e513
2  OK
3  127.0.0.1:6379> object encoding listkey
4  "linkedlist"
当某个元素的⻓度超过 64 字节时,内部编码为 linkedlist:
1  127.0.0.1:6379> rpush listkey "one string is bigger than 64 by

你可能感兴趣的:(Redis,redis,数据库,缓存)