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,則默認移除列表中所有的這個元素, 若個數爲負數,則從列表右端開始向左端檢查,並移除最先發現的負數的絕對值個元素。

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