redis資料型別 List

2021-07-16 12:17:46 字數 1996 閱讀 7792

list(列表)是鍊錶結構,新增或刪除元素是常量時間。

list常用命令

lpush key value 從列表左邊新增元素

lpushx key value 從列表左邊新增元素,只有當key存在的時候才會新增,否則不執行。

rpush key value 從列表右邊新增元素

rpushx key value 從列表右邊新增元素 ,只有當key存在的時候才會新增,否則不執行。

lpop key 從列表左邊彈出第乙個元素

blpop ket timeout 從列表左邊彈出第乙個元素,如果列表沒有元素就阻塞,知道timeout時間後超時返回 ,timeout為0時一直阻塞

rpop key 從列表右邊彈出第乙個元素

brpop ket timeout 從列表右邊彈出第乙個元素,如果列表沒有元素就阻塞,知道timeout時間後超時返回 ,timeout為0時一直阻塞

lrange key start

end 獲取範圍內的列表值 start從0開始 end 為-1代表最後乙個 end -2 **獲取倒數第2個

list key

0 -1 獲取全部值

ltrim key

start

end 跟lrange相似 ,獲取範圍內的列表值,不同的是 ,不在範圍內的值都刪掉。

llen key 獲取列表長度

lset key index value 設定列表指定位置的值 index 為0代表替換頭部元素的值 index為-1代表替換尾部元素的值。

lindex key index 獲取列表中指定位置的值 index 為0代表獲取頭部元素的值,index為-1代表獲取尾部元素的值

lrem key

count

value 時間複雜度中n表示鍊錶中元素的數量。在指定key關聯的鍊錶中,刪除前count個值等於value的元素。

如果count大於0,從頭向尾遍歷並刪除,如果count小於0,則從尾向頭遍歷並刪除。

如果count等於0,則刪除鍊錶中所有等於value的元素。如果指定的key不存在,則直接返回0。

rpoplpush source destination 原子性的從與source鍵關聯的鍊錶尾部彈出乙個元素,同時再將彈出的元素插入到與destination鍵關聯的鍊錶的頭部。

如果source鍵不存在,該命令將返回nil,同時不再做任何其它的操作了。

如果source和destination是同乙個鍵,則相當於原子性的將其關聯鍊錶中的尾部元素移到該鍊錶的頭部。

blpop、blpop注意事項:

客戶端按順序服務:第乙個被阻塞等待列表的客戶端,將第乙個收到其他客戶端新增的元素,等等。

與 rpop 的返回值不同:返回的是乙個陣列,其中包括鍵的名字,因為 brpop 和 blpop 可以阻塞等待多個列表的元素。

如果超時時間到達,返回 null。

總結:

針對鍊錶結構的value,redis在其官方文件中給出了一些實用技巧,如rpoplpush命令,下面給出具體的解釋。

redis鍊錶經常會被用於訊息佇列的服務,以完成多程式之間的訊息交換。

假設乙個應用程式正在執行lpush操作向鍊錶中新增新的元素,

我們通常將這樣的程式稱之為」生產者(producer)」,

而另外乙個應用程式正在執行rpop操作從鍊錶中取出元素,

我們稱這樣的程式為」消費者(consumer)」。如果此時,消費者程式在取出訊息元素後立刻崩潰,

由於該訊息已經被取出且沒有被正常處理,那麼我們就可以認為該訊息已經丟失,由此可能會導致業務資料丟失

,或業務狀態的不一致等現象的發生。

然而通過使用rpoplpush命令,消費者程式在從主訊息佇列中取出訊息之後再將其插入到備份佇列中,直到消費者程式完成正常的處理邏輯後再將該訊息從備份佇列中刪除。

同時我們還可以提供乙個守護程序,當發現備份佇列中的訊息過期時,可以重新將其再放回到主訊息佇列中,以便其它的消費者程式繼續處理。

Redis資料型別 List

lpush 在對應的list頭部新增元素 127.0.0.1 6379 lpush mylist value1 integer 1 127.0.0.1 6379 lpush mylist value2 integer 2 列印出來看一下 127.0.0.1 6379 lrange mylist 0 ...

Redis資料型別 List

list資料型別 lpush key value 新增list資料,value可以為多個值,假如我們使用方法新增 a b c 這個三個value的時候,實際上就執行了三次這個命令,等我們獲取資料的時候就是c b a lpushx key value 新增資料資訊,和lpush命令相反,從尾部開始新增...

redis資料型別list

list資料型別 資料儲存需求 儲存多個資料,並對資料進入儲存空間的順序進行區分 需要的儲存結構 乙個儲存空間儲存多個資料,且通過資料可以體現進入順序 list型別 儲存多個資料,底層使用雙向鍊錶儲存結構實現 資料結構特點 順序表 頭指標 aaa bb cc dd 全部平移 查詢快,增刪慢 鍊錶 頭...