006_Redis的List数据类型
1. List類(lèi)型是一個(gè)鏈表結(jié)構(gòu)的集合, 主要功能有push, pop, 獲取元素等。List類(lèi)型是一個(gè)雙端鏈表的結(jié)構(gòu), 我們可以通過(guò)相關(guān)操作進(jìn)行集合的頭部或者尾部添加刪除元素, List的設(shè)計(jì)非常簡(jiǎn)單精巧, 既可以做為棧, 又可以作為隊(duì)列。List類(lèi)型可以存放相同的值。
2. 將一個(gè)或多個(gè)值插入到列表頭部
2.1. 語(yǔ)法: lpush key value1 [value2]。
2.2. lpush命令將一個(gè)或多個(gè)值插入到列表頭部(棧的功能, 先進(jìn)后出)。如果key不存在, 一個(gè)空列表會(huì)被創(chuàng)建并執(zhí)行l(wèi)push操作。當(dāng)key存在但不是列表類(lèi)型時(shí), 返回一個(gè)錯(cuò)誤。
2.3. 返回執(zhí)行l(wèi)push命令后, 列表的長(zhǎng)度。
2.4. 實(shí)例
3. 將一個(gè)或多個(gè)值插入到列表尾部
3.1. 語(yǔ)法: rpush key value1 [value2]。
3.1. rpush命令用于將一個(gè)或多個(gè)值插入到列表的尾部(隊(duì)列的功能, 先進(jìn)先出)。如果列表不存在, 一個(gè)空列表會(huì)被創(chuàng)建并執(zhí)行rpush操作。當(dāng)列表存在但不是列表類(lèi)型時(shí), 返回一個(gè)錯(cuò)誤。
3.1. 返回執(zhí)行rpush操作后, 列表的長(zhǎng)度。
3.1. 實(shí)例
4. 移出并獲取列表的第一個(gè)元素
4.1. 語(yǔ)法: lpop key。
4.2. lpop命令移出列表的第一個(gè)元素(頭部), 并返回元素。
4.3. 返回列表的第一個(gè)元素(移除的元素)。當(dāng)列表key不存在時(shí), 返回nil。
4.4. 實(shí)例
5. 移除并獲取列表的最后一個(gè)元素
5.1. 語(yǔ)法: rpop key。
5.2. rpop命令用于移除列表的最后一個(gè)元素(尾部), 返回值為移除的元素。
5.3. 返回列表的最后一個(gè)元素(移除的元素)。當(dāng)列表key不存在時(shí), 返回nil。
5.4. 實(shí)例
6. 在列表的元素前或者后插入元素
6.1. 語(yǔ)法: linsert key before|after pivot value。
6.2. linsert命令用于在列表的元素前或者后插入元素。當(dāng)指定元素不存在于列表中時(shí), 不執(zhí)行任何操作。當(dāng)列表不存在時(shí), 被視為空列表, 不執(zhí)行任何操作。如果key不是列表類(lèi)型, 返回一個(gè)錯(cuò)誤。
6.3. 如果命令執(zhí)行成功, 返回插入操作完成之后, 列表的長(zhǎng)度。如果沒(méi)有找到指定元素, 返回-1。如果key不存在或?yàn)榭樟斜? 返回0。
6.4. 實(shí)例
7. 獲取列表長(zhǎng)度
7.1. 語(yǔ)法: llen key。
7.2. llen命令用于返回列表的長(zhǎng)度。如果列表key不存在, 則key被解釋為一個(gè)空列表, 返回0。如果key不是列表類(lèi)型, 返回一個(gè)錯(cuò)誤。
7.3. 返回列表的長(zhǎng)度。
7.4. 實(shí)例
8. 獲取列表指定范圍內(nèi)的元素
8.1. 語(yǔ)法: lrange key start stop。
8.2. lrange返回列表中指定區(qū)間內(nèi)的元素, 區(qū)間以偏移量start和end指定。其中0表示列表的第一個(gè)元素, 1表示列表的第二個(gè)元素, 以此類(lèi)推。你也可以使用負(fù)數(shù)下標(biāo), 以-1表示列表的最后一個(gè)元素, -2表示列表的倒數(shù)第二個(gè)元素, 以此類(lèi)推。
8.3. 返回一個(gè)列表, 包含指定區(qū)間內(nèi)的元素。
8.4. 實(shí)例
9. 通過(guò)索引獲取列表中的元素
9.1. 語(yǔ)法: lindex key index。
9.2. lindex命令用于通過(guò)索引獲取列表中的元素。你也可以使用負(fù)數(shù)下標(biāo), 以-1表示列表的最后一個(gè)元素, -2表示列表的倒數(shù)第二個(gè)元素, 以此類(lèi)推。
9.3. 返回列表中下標(biāo)為指定索引值的元素。如果指定索引值不在列表的區(qū)間范圍內(nèi), 返回nil。
9.4. 實(shí)例
10. 通過(guò)索引設(shè)置列表元素的值
10.1. 語(yǔ)法: lset key index value。
10.1. lset通過(guò)索引來(lái)設(shè)置元素的值。當(dāng)索引參數(shù)超出范圍或?qū)σ粋€(gè)空列表進(jìn)行l(wèi)set時(shí), 返回一個(gè)錯(cuò)誤。
10.1. 返回操作成功返回ok, 否則返回錯(cuò)誤信息。
10.1. 實(shí)例
11. 對(duì)一個(gè)列表進(jìn)行修剪
11.1. 語(yǔ)法: ltrim key start stop。
11.2. ltrim對(duì)一個(gè)列表進(jìn)行修剪(trim), 就是說(shuō), 讓列表只保留指定區(qū)間內(nèi)的元素, 不在指定區(qū)間之內(nèi)的元素都將被刪除。下標(biāo)0表示列表的第一個(gè)元素, 以1表示列表的第二個(gè)元素, 以此類(lèi)推。 你也可以使用負(fù)數(shù)下標(biāo), 以-1表示列表的最后一個(gè)元素, -2表示列表的倒數(shù)第二個(gè)元素, 以此類(lèi)推。
11.3. 命令執(zhí)行成功時(shí), 返回ok。
11.4. 實(shí)例
12. 移除列表元素
12.1. 語(yǔ)法: lrem key count value。
12.2. lrem根據(jù)參數(shù)count的值, 移除列表中與參數(shù)value相等的元素。
count 的值可以是以下幾種:
count > 0: 從表頭開(kāi)始向表尾搜索, 移除與value相等的元素, 數(shù)量為count。
count < 0: 從表尾開(kāi)始向表頭搜索, 移除與value相等的元素, 數(shù)量為count的絕對(duì)值。
count = 0: 移除表中所有與value相等的值。
12.3. 返回被移除元素的數(shù)量。列表不存在時(shí)返回0。
12.4. 實(shí)例
13. 將一個(gè)值插入到已存在的列表頭部
13.1. 語(yǔ)法: lpushx key value。
13.1. lpushx將一個(gè)值插入到已存在的列表頭部, 列表不存在時(shí)操作無(wú)效。
13.1. 返回lpushx命令執(zhí)行之后, 列表的長(zhǎng)度。
13.1. 實(shí)例
14. 將一個(gè)值插入到已存在的列表尾部
14.1. 語(yǔ)法: rpushx key value。
14.1. rpushx命令用于將一個(gè)值插入到已存在的列表尾部。如果列表不存在, 操作無(wú)效。
14.1. 返回執(zhí)行rpushx操作后, 列表的長(zhǎng)度。
14.1. 實(shí)例
15. 移除列表的最后一個(gè)元素到另一個(gè)列表并返回元素
15.1. 語(yǔ)法: rpoplpush source destination。
15.2. rpoplpush命令用于移除列表的最后一個(gè)元素, 并將該元素添加到另一個(gè)列表并返回元素。
15.3. 返回被彈出的元素。
15.4. 實(shí)例
16. 移除并獲取列表的第一個(gè)元素并設(shè)置超時(shí)時(shí)間
16.1. 語(yǔ)法: blpop key1 [key2] timeout。
16.1. blpop命令移出并獲取列表的第一個(gè)元素, 如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。超時(shí)時(shí)間以秒為單位。
16.1. 如果列表為空, 返回一個(gè)nil。否則, 返回一個(gè)含有兩個(gè)元素的列表, 第一個(gè)元素是被彈出元素所屬的key, 第二個(gè)元素是被彈出元素的值。
16.1. 實(shí)例
17. 移除并獲取列表的最后一個(gè)元素并設(shè)置超時(shí)時(shí)間
17.1. 語(yǔ)法: brpop key1 [key2] timeout。
17.2. brpop命令移出并獲取列表的最后一個(gè)元素, 如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。超時(shí)時(shí)間以秒為單位。
17.3. 假如在指定時(shí)間內(nèi)沒(méi)有任何元素被彈出, 則返回一個(gè)nil和等待時(shí)長(zhǎng)。反之, 返回一個(gè)含有兩個(gè)元素的列表, 第一個(gè)元素是被彈出元素所屬的key, 第二個(gè)元素是被彈出元素的值。
17.4. 實(shí)例
18. 從列表中取出最后一個(gè)元素并插入到另外一個(gè)列表的頭部并設(shè)置超時(shí)時(shí)間
18.1. 語(yǔ)法: brpoplpush source destination timeout。
18.2. brpoplpush命令從列表中取出最后一個(gè)元素, 并插入到另外一個(gè)列表的頭部; 如果列表沒(méi)有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。超時(shí)時(shí)間以秒為單位。
18.3. 假如在指定時(shí)間內(nèi)沒(méi)有任何元素被彈出, 則返回一個(gè)nil和等待時(shí)長(zhǎng)。反之, 返回被彈出的元素值。
18.4. 實(shí)例
總結(jié)
以上是生活随笔為你收集整理的006_Redis的List数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 018_Jedis的Hash数据类型
- 下一篇: 007_Redis的Set数据类型