Redis基本类型之List类型

文章目录

  • Redis基本类型之List类型
    • 一、概述
      • 1、简介
      • 2、特征
    • 二、List类型的常用命令
    • 三、操作案例
      • 1、lpush(左侧插入一个或多个)
      • 2、lpop(左侧移除)
      • 3、rpush(右侧插入一个或多个)
      • 4、rpop(右侧移除)
      • 5、lrange(获取角标元素)
      • 6、blpop (左侧移除)
      • 7、brpop(右侧移除)
      • 8、lpush 与 blpop 阻塞式获取
    • 四、问题
      • 1、如何利用List结构模拟一个栈?
      • 2、如何利用List结构模拟一个队列?
      • 3、如何利用List模拟一个阻塞队列?


Redis基本类型之List类型

一、概述

1、简介

  • Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索
  • push:添加
  • pop:删除

2、特征

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

二、List类型的常用命令

命令 作用
lpush 向列表左侧插入一个或多个元素
lpop 移除并返回列表左侧的第一个元素,没有则返回null
rpush 向列表右侧插入一个或多个元素
rpop 移除并返回列表右侧的第一个元素
lrange 返回一段角标范围内的所有元素
blpop 与 lpop 类似,只不过在没有元素时等待指定时间,而不是直接返回nil
brpop 与 rpop 类似,只不过在没有元素时等待指定时间,而不是直接返回nil

三、操作案例

1、lpush(左侧插入一个或多个)

  • lpush:向列表左侧插入一个或多个元素
192.168.8.137:6379> LPUSH users 1 2 
(integer) 2

Redis基本类型之List类型_第1张图片

2、lpop(左侧移除)

  • lpop:移除并返回列表左侧的第一个元素,没有则返回null
# 会把2移除
192.168.8.137:6379> LPOP users 1
1) "2"

Redis基本类型之List类型_第2张图片

3、rpush(右侧插入一个或多个)

  • rpush:向列表右侧插入一个或多个元素
192.168.8.137:6379> RPUSH users 4 5 6
(integer) 5

Redis基本类型之List类型_第3张图片

4、rpop(右侧移除)

  • rpop:移除并返回列表右侧的第一个元素
192.168.246.128:6379> RPOP users 1
1) "6"

Redis基本类型之List类型_第4张图片

5、lrange(获取角标元素)

  • lrange:返回一段角标范围内的所有元素
192.168.246.128:6379> LRANGE users 1 2
1) "4"
2) "5"

Redis基本类型之List类型_第5张图片

6、blpop (左侧移除)

  • blpop:与 lpop 类似,只不过在没有元素时等待指定时间,而不是直接返回nil
192.168.246.128:6379> BLPOP users 1
1) "users"
2) "1"

Redis基本类型之List类型_第6张图片

7、brpop(右侧移除)

  • brpop:与 rpop 类似,只不过在没有元素时等待指定时间,而不是直接返回nil
192.168.246.128:6379> BRPOP users 2
1) "users"
2) "5"

Redis基本类型之List类型_第7张图片

8、lpush 与 blpop 阻塞式获取

  • 多开一个命令窗口,阻塞式获取
192.168.8.137:6379> LPUSH users2 jack
(integer) 1
192.168.8.137:6379> BLPOP users2 2
1) "users2"
2) "jack"

Redis基本类型之List类型_第8张图片

四、问题

1、如何利用List结构模拟一个栈?

  • 入口和出口在同一边

2、如何利用List结构模拟一个队列?

  • 入口和出口在不同边

3、如何利用List模拟一个阻塞队列?

  • 入口和出口在不同边
  • 出队时采用BLPOP或BRPOP

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