Redis中List儲存型別
在Redis中,List型別是按照插入的順序排序的字串連結串列。和資料結構中的普通連結串列一樣,可以在其頭部(left)和尾部(right)新增新的元素。在插入元素時,如果該鍵不存在,Redis將為該鍵建立一個新的連結串列。如果連結串列中所有的元素均被移除,那麼該鍵也會從資料庫中刪除。
從元素的插入和刪除效率的角度來看,我們從連結串列的兩頭進行插入或者刪除,這將會是非常高效的操作,即使連結串列中已經儲存了百萬條記錄,該操作也可以在常量時間內完成。然而,如果元素的插入和刪除是作用於連結串列中間,將會是非常低效的。
List相關的命令:
(1)LPUSH key value [value…]:在指定Key所關聯的List Value的頭部插入引數中給出的所有Values。如果該key不存在,該命令將在插入之前建立一個與該key關聯的空連結串列,之後再將資料從連結串列的頭部插入。如果該鍵的value不是連結串列型別,該命令將返回錯誤資訊。該命令返回插入後連結串列中元素的數量。
(2)LPUSHX key value:僅有當引數中指定的key存在時,該命令才會在其所關聯的List Value的頭部插入引數中給出的Value,否則不會有任何操作發生。該命令返回插入後連結串列中元素的數量。
(3)LRANGE key start stop:返回指定範圍內元素的列表。
(4)LPOP key:返回並彈出指定key關聯的連結串列中的第一個元素,即頭部元素,如果該key不存在,返回nil。
(5)LLEN key:返回指定key關聯的連結串列中元素的數量,如果key不存在,則返回0,如果與該key關聯的value型別不是連結串列,則返回相關的錯誤資訊。
(6)LREM key count value:在指定key關聯的連結串列中,刪除前count個值等於value的元素,如果count大於0,從頭向尾遍歷並刪除,如果count小於0,則從尾向頭遍歷並刪除。如果count等於0,則刪除連結串列中所有等於value的元素,如果指定的key不存在,則直接返回0;該命令返回被刪除的元素數量。
(7)LSET key index value:設定連結串列中指定位置的值為新值,其中0表示第一個元素,即頭部元素,-1表示尾部元素。如果索引值index超出了該連結串列中元素的數量範圍,該命令將返回相關的錯誤資訊。
(8)LINDEX key index:該命令返回連結串列中指定位置(index)的元素,index是0-based,表示頭部元素,如果index為-1,表示尾部元素。如果與該key關聯的不是連結串列,該命令將返回相關的錯誤資訊。如果index超出範圍,返回nil。
(9)LTRIM key start stop:該命令將僅保留指定範圍內的元素,從而保證連結中的元素數量相對恆定。start和stop引數都是0-based,0表示頭部元素,-1表示尾部元素,如果start大於;連結串列的尾部,或者start大於stop,該命令不會報錯,而是返回一個空的連結串列,與此同時key也將被刪除。如果stop大於元素的數量,則保留從start開始剩餘的所以元素。
(10)LINSERT key BEFORE|AFTER pivot value:在pivot元素的前面或者後面插入引數中的元素value。如果key不存在,該命令不執行任何操作,如果與key關聯的value型別不是連結串列,相關的錯誤資訊你將被返回。返回成功插入後連結串列中元素的數量。如果沒有找到pivot,返回-1,如果key不存在,返回0。
(11)RPUSH key value[value…]:在指定key所關聯的List Value的尾部插入引數中給出的所有values。如果該key不存在,該命令將在插入之前建立一個與該key關聯的空連結串列,之後再將資料從連結串列的尾部插入。如果該鍵的value不是連結串列型別,該命令將返回相關的錯誤資訊。該命令返回插入後連結串列中元素的數量。
(12)RPUSHX key value:僅有當引數中指定的Key存在時,該命令才會在其所關聯的List Value的尾部插入引數中給出的Value,否則將不會有任何操作發生。 該命令返回插入後連結串列中元素的數量。
(13)RPOP key :返回並彈出指定Key關聯的連結串列中的最後一個元素,即尾部元素,如果該Key不存,返回nil
(14)RPOPLPUSH source destination :原子性的從與source鍵關聯的連結串列尾部彈出一個元素,同時再將彈出的元素插入到與destination鍵關聯的連結串列的頭部。如果source鍵不存在,該命令將返回nil,同時不再做任何其它的操作了。如果source和destination是同一個鍵,則相當於原子性的將其關聯連結串列中的尾部元素移到該連結串列的頭部。該命令返回彈出和插入的元素。 --------------------- 本文來自 Cortana_la 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/qq_27656675/article/details/68231961?utm_source=copy