1. 程式人生 > 其它 >redis常用資料型別操作二 列表 (List)

redis常用資料型別操作二 列表 (List)

redis列表 (List)

簡介

單鍵多值

redis列表是簡單的字串列表,按照插入的順序排序,可以新增一個元素到列表的頭部(左邊)或尾部(右邊)

它底層是一個 雙向連結串列,對兩端的操作效能很高,通過索引下標的操作中間的節點效能會較差。

 

 

常用命令

lpush/rpush <key> <value1><value2>.. 從左邊或右邊插入多值操作

 

 

 

 

lpop/rpop <key> 從左邊/右邊吐出一個值,值在鍵在,值光鍵亡

 

 

rpoplpush <key1><key2>: 從<key1>列表右側吐出一個值,插入到<key2>列表左邊

 

 

 

lrange <key> <starr><stop> 按照索引下標獲取元素(從左到右),larnge <key> 0 -1 :0取左邊第一個,-1右邊第一個

 

 

lindex<key> <index> 按照索引下標取得元素

 

 

llen <key> 獲得列表長度

 

linsert <key> before/after <value> <newvalue><value>的後面/前面插入<newvalue>

 

 

lrem <key> <n> <value>

從左邊刪除n個value(從左到右)(刪除指定的value,並且指定刪除幾個及從哪裡開始刪除)

 

 

lset <key> <index> <value> :將列表key下標為index 的值替換成value

資料結構

List 的資料結為連結串列,quicklist

首先在列元素較少的情況下會使用一塊連續的記憶體儲存,這個結構是ziplist,也即是壓縮列表。

它將所有的元素緊挨著一起儲存,分配的是一塊連續的記憶體。

當資料量比較多的時候才會改成quicklist。

因為普通的連結串列需要的附加指標控制元件太大,會比較浪費空間,比如這個列表只儲存int型別的資料,結構上還需要兩個額外的指標,prev 和next

 

 

redis將量表和ziplist結合起來組成了quicklist,也就是將多個ziplist使用雙向指標串起來使用,這樣既滿足了快速的插入刪除效能,又不會出現太大的空間冗餘