Redis列表學習記錄

2021-10-05 16:07:11 字數 1709 閱讀 3817

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

REDIS學習記錄

使用 redis 自己個人的理解 1.如果使用 key 查詢查詢範圍查詢條件,注意項應該有命中率的問題,就好像說資料分庫分表分割槽,避免全表掃類似。2.事務 2.1 關係型資料庫目的為也保證資料完事性,安全 2.2 redis目的為也進行redis語句的指化執行。命令 multi開戶事務,exec ...

Redis學習記錄

支援儲存的value型別包括 string 字串 list 鍊錶 set 集合 zset 有序集合 哈市 雜湊表 命令原型 set key value 描述 設定該key持有特定的字串value,如果該key已經存在,就覆蓋它。返回值 總是返回 ok get key 獲取指定key的value,如果...

redis學習記錄

什麼是redis redis是由義大利人salvatore sanfilippo 網名 antirez 開發的一款記憶體快取記憶體資料庫。redis全稱為 remote dictionary server 遠端資料服務 該軟體使用c語言編寫,redis是乙個key value儲存系統,它支援豐富的資...