Redis中List实现双链表

bangongJIAO1@c 发布于 2025-11-30 阅读(3)
目录
  • 概述:
  • 特征:(与LinkedList类似)
  • List常见命令
    • 1.Lpush key element.....:向列表左侧插入一个或多个元素
    •  2.LPOP key :移除并返回列表左侧的第一个元素,没有则返回nil
    • 3.RPUSH key element...:向列表右侧插入一个或多个元素
    • 4.RPOP key :移除并返回列表左侧的第一个元素,没有则返回nil
    • 5.LRANGE key star end:返回一段角标范围内的所有元素
    • 6.BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素是等待指定时间,而不是直接返回nil
  • 遗留下的问题:

    概述:

    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)在命令行里面写入数据

    Redis中List实现双链表

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

    Redis中List实现双链表

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

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

    Redis中List实现双链表

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

    Redis中List实现双链表

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

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

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

    Redis中List实现双链表

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

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

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

    Redis中List实现双链表

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

    (1)新添加数据

    Redis中List实现双链表

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

    Redis中List实现双链表

    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)