List類型是一個鏈表結(jié)構(gòu)的集合,其主要功能有push、pop、獲取元素等。更詳細(xì)的說,List類型是一個雙端鏈表的節(jié)后,我們可以通過相關(guān)的操作進(jìn)行集合的頭部或者尾部添加和刪除元素,List的設(shè)計非常簡單精巧,即可以作為棧,又可以作為隊列,滿足絕大多數(shù)的需求。是一個存儲字符串類型的集合按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素) 類似JAVA中的LinkedList
list類型的常見命令:
賦值
LPUSH key value1 [value2] :將一個或多個值插入到列表頭部(從左側(cè)添加)
RPUSH key value1 [value2] :在列表中添加一個或多個值(從右側(cè)添加)
LPUSHX key value :將一個值插入到已存在的列表頭部。如果列表不在,操作無效
RPUSHX key value :一個值插入已存在的列表尾部(最右邊)。如果列表不在,操作無效。
取值
LLEN key :獲取列表長度
LINDEX key index :通過索引獲取列表中的元素
LRANGE key start stop :獲取列表指定范圍內(nèi)的元素
描述: 返回列表中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量 START 和 END 指定。
其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。
也可以使用負(fù)數(shù)下標(biāo),以 -1 表示列表的最后一個元素, -2 表示列表的倒數(shù)第二個元素,以此類推。 start: 頁大小(頁數(shù)-1) stop : (頁大小 頁數(shù))-1
當(dāng)前是第1頁, 每頁顯示3條數(shù)據(jù)
start :0 stop:2
start :3 stop:5
start :6 stop: 8
刪除
LPOP key 移出并獲取列表的第一個元素(從左側(cè)刪除) RPOP key 移除列表的最后一個元素,返回值為移除的元素(從右側(cè)刪除) BLPOP key1 [key2 ] timeout 移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超 時或發(fā)現(xiàn)可彈出元素為止。
實例: redis 127.0.0.1:6379> BLPOP list1 100 在以上實例中,操作會被阻塞,如果指定的列表 key list1 存在數(shù)據(jù)則會返回第一個元素,否則在等待100秒后會 返回 nil
BRPOP key1 [key2 ] timeout :移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待 超時或發(fā)現(xiàn)可彈出元素為止。
LTRIM key start stop :對一個列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在 指定區(qū)間之內(nèi)的元素都將被刪除。
修改
LSET key index value :通過索引設(shè)置列表元素的值
LINSERT key BEFORE|AFTER world value :在列表的元素前或者后插入元素 描述:將值 value 插入到 列表 key 當(dāng)中,位于值 world 之前或之后。
高級命令
RPOPLPUSH source destination :移除列表的最后一個元素,并將該元素添加到另一個列表并返回 示例描述:
RPOPLPUSH a1 a2 :a1的最后元素移到a2的左側(cè) RPOPLPUSH a1 a1 :循環(huán)列表,將最后元素移到最左側(cè)
BRPOPLPUSH source destination timeout :從列表中彈出一個值,將彈出的元素插入到另外一個列表 中并返回它; 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。