首页 > 数据库 >Redis学习(三)之redis中的数据类型之List类型

Redis学习(三)之redis中的数据类型之List类型

时间:2022-11-18 23:24:33浏览次数:35  
标签:RPOP 队列 Redis 元素 redis 链表 list 数据类型

 

 1、redis中的list使用的是链表结构,链表结构可以保证插入速度快。

 

 

 

1、LPUSH指令将元素加入链表左侧,RPUSH指令将元素加入链表右侧,LRANGE 获取指定下标,-1指的是从右侧数第一个,-2是右侧第二个。

 

 1、RPUSH和LPUSH可以一次性推入多个元素进入链表

 

 1、RPOP可以弹出一个元素,这个指令会弹出这个元素,并且从链表中移除这个元素。如果链表中没有值了,就会返回一个NULL。

 

 1、链表的使用案例:

  1)推特的用户最新的推文放入list

  2)用户发布照片,将照片id加入list,当用户的主页被访问时,使用LRANGE 0 9 获取最后更新的照片。

 

 

1、ltrim可以对链表长度进行裁剪,ltrim list m n ,m n是闭区间,这个ltrim裁剪后并不能永久固定链表的长度,只是本次生效而已。下次再push,想固定长度的话,需要再次trim。所以push和trim需要每次组合使用。

 

 1、阻塞list,如果是实现队列场景,用RPOP或LPOP会造成一定的性能损耗,因为即使队列中没有数据,也会返回NULL,所以redis增加了BRPOP和BLPOP,用阻塞队列来减少性能损耗。

 2、阻塞队列返回给调用者数据:新元素加入队列或达到设置的超时时间时。

 

 1、BRPOP list time , time如果是0,表示永久等待。

 2、可以同时等待多个队列的数据。

 

 1、BRPOP与RPOP返回的值不同,前者返回的是两个元素的数组,包括了队列名称和弹出的值。

 2、关于队列阻塞的操作,还要LMOVE命令,这个命令是原子性的,例如

LMOVE mylist myotherlist RIGHT LEFT
这样可以在redis内进行队列间数据的传递。

标签:RPOP,队列,Redis,元素,redis,链表,list,数据类型
From: https://www.cnblogs.com/dongzhensd/p/16903043.html

相关文章