Redis列表学习记录

概括

redis列表是一种有序的线性结构,它之中的数据可以重复。正是因为它是有序的,所以它能作为一些常用的数据结构,如队列、栈等。也能进行一些相应的操作,比如遍历、索引取值等。

操作命令

推入、取出操作:LPUSH、RPUSH、LPOP、RPOP

LPUSH、RPUSH、LPOP、RPOP这四个命令分别对应于左边推入、右边推入、左边弹出、右边弹出这四个操作,其中推入操作可一次推入多个值,如果按照从左向右来看推入的数据的话,那么LPUSH最先推入的在最右边、RPUSH最先推入的在最左边,即RPUSH操作看起来跟从左向右的方向一致。另外还有LPUSHX、RPUSHX操作,这两个操作是只有列表本身存在的条件下才会起反应,并且它们一次只能推入一个元素。
弹出操作,操作一次只能弹出列表最边上的一个元素,LPOP弹出左边的元素,RPOP弹出最右边的元素。另外还有BRPOP这个命令,它后跟一个或多个空值列表,其用来可以阻塞客户端的弹出操作,直到有另一个客户端向对应的某个列表中推入一个数据时,这个客户端才会变为非阻塞状态。BLPOP命令类似。
这里还有一个命令 RPOPLPUSH命令,它指从源列表最右端弹出一个元素,并推入到目标列表的最左边,源列表和目标列表可以是同一个列表。
BRPOPLPUSH命令即是阻塞式的RPOPLPUSH命令。
命令汇总:

LPUSH list item [item item ...]
RPUSH list item [item item ...]
LPUSHX list item
RPUSHX list item
LPOP list
RPOP list
RPOPLPUSH sourcelist targetlist
BLPOP list [list ...] timeout
BRPOP list [list ...] timeout
BRPOPLPUSH source_list target_list timeout

LSET命令

LSET list index new_element

这个命令即给对应的索引位置设置新的值,若给的索引超出列表原本范围,则返回错误。

LINSERT

LINSERT list BEFORE|AFTER target_element new_element

这个命令在列表中元素的前面或者后面插入新元素(因为列表中数据有重复,所以它只在最先找到的元素位置插入)。

LRANGE

LRANGE list start end

获取对应索引范围内的元素。注意这里的范围是闭区间。索引也可以为负值,比如最后一个元素的索引为-1,一般获取列表中所有元素的操作命令是: LRANGE list 0 -1。

LLEN

LLEN list

获取列表的长度。

LINDEX

LINDEX list index

获取指定索引上的元素。

LTRIM

LTRIM list start end

对列表进行裁剪。只保留指定闭区间范围内的元素。

LREM

LREM list count element

从列表中移除对应的某个元素,因为元素是重复的,可以有多个,所以可以指定移除的个数。若指定个数为0,则默认移除列表中所有的这个元素, 若个数为负数,则从列表右端开始向左端检查,并移除最先发现的负数的绝对值个元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章