Redis基础命令(List类型)双链表

概述:

Redis中的list类型与java中的LinkedList集合类似,可以看作是一个双向的链表结构,既可以支持正向的检索,也可以支持反向的检索

特征:(与LinkedList类似)

1.有序

2.元素可以重复

3.插入与删除一样快

4.查询速度一般(遍历所有节点来查询)

List常见命令

1.Lpush key element.....:向列表左侧插入一个或多个元素 2.LPOP key :移除并返回列表左侧的第一个元素,没有则返回nil 3.RPUSH key element...:向列表右侧插入一个或多个元素 4.RPOP key :移除并返回列表左侧的第一个元素 5.LRANGE key star end:返回一段角标范围内的所有元素 6.BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素是等待指定时间,而不是直接返回nil

1.Lpush key element.....:向列表左侧插入一个或多个元素

(1)在命令行里面写入数据

(2)在图形工具查看数据(我们可以看到,在图形化界面的里面是是倒叙的,这是因为我们使用了头插法)

2.LPOP key :移除并返回列表左侧的第一个元素,没有则返回nil

(1)在命令行里面写入数据

(2)在图形工具查看数据(我们可以看到,在图形化界面的里面是是倒叙的,这是因为我们使用了头插法)

3.RPUSH key element...:向列表右侧插入一个或多个元素

(1)在命令行里面写入数据

(2)在图形工具查看数据(我们可以看到,在图形化界面的里面是是倒叙的,这是因为我们使用了头插法)

4.RPOP key :移除并返回列表左侧的第一个元素,没有则返回nil

(1)在命令行里面写入数据

(2)在图形工具查看数据(我们可以看到,在图形化界面的里面是是倒叙的,这是因为我们使用了头插法)

5.LRANGE key star end:返回一段角标范围内的所有元素

(1)新添加数据

(2)在命令行里面写入数据

6.BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素是等待指定时间,而不是直接返回nil

(1)在命令行里面写入数据(代表了在100秒之内如果发现就执行操作,否则一直堵塞在这里)

(2)新开一个cmd写入数据

(3)效果

总结:

不难理解,走过一遍流程就像是喝水这么简单,但是喝水的姿势还不是这么流畅,需要重复练习

遗留下的问题:

如何用List结构模拟出一个栈?

--入口与出口在一起(Lpush与Lpop,Rpush与Rpop)

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

--入口与出口不在一起(Lpush与Rpop,Rpush与Lpop)

如何利用List结构模拟一个阻塞队列?

--也是队列,即入口与出口不在一起(Lpush与BRpop,Rpush与BLpop)

--出队的时候采用(BRpop,BLpop)

经验分享 程序员 微信小程序 职场和发展