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