Redis列表
1、Redis Blpop命令:
(1)說明:Redis Blpop命令移出并獲取列表的第一個元素;如果列表沒有元素會阻塞列表直到等到超時或發現可彈出元素為止
(2)語法:redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT;如果列表為空,返回一個nil;否則返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的key,第二個元素是被彈出元素的值
(3)實例:以下實例中,操作會被阻塞,如果指定的列表key list1存在數據則會返回第一個元素,否則在等待100s后會返回nil。如下圖:
?
?
?
2、Redis Brpop命令
(1)說明:Redis Brpop命令移出并獲取列表最后一個元素,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止
(2)語法:redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT ;假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長;反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的key,第二個元素是被彈出元素的值
(3)實例:以下實例中,操作會被阻塞,如果指定的列表?key list1 存在數據則會返回第一個元素,否則在等待100s后會返回nil,如下圖:
?
?
?
3、Redis Brpoplpush命令
(1)說明:Redis Brpoplpush命令從列表中彈出一個值,將彈出的元素插入到另一個列表中并返回它;如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止
(2)語法:redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT ;假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長;反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長
(3)實例:沒有值的情況:
?
?
有值的情況:
# 非空列表
redis> BRPOPLPUSH msg reciver 500"hello moto" ?# 彈出元素的值
(3.38s) ?# 等待時長
redis> LLEN reciver(integer) 1
redis> LRANGE reciver 0 01) "hello moto"
?
?
?
?
4、Redis Lindex 命令
(1)說明:Redis Lindex 命令用于通過索引獲取列表中的元素;你也可以使用負數下標,以-1表示列表的最后一個元素,-2表示列表倒數第二個元素,以此類推。
(2)語法:redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION ;列表中下標為指定索引值的元素;如果指定索引值不在列表的區間范圍內,返回nil
(3)實例:
?
?
?
?
5、Redis Linsert命令
(1)說明:Redis Linsert命令用于在列表的元素前或者后插入元素,當指定元素不存在于列表時,不執行任何操作;當列表不存在時,被視為空列表,不執行任何操作;如果key不是列表類型,返回一個錯誤。
(2)語法:redis 127.0.0.1:6379> LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE ;如果命令執行成功,返回插入操作完成之后,列表的長度;如果沒有找到指定元素,返回-1;如果key不存在或空列表,返回0。
(3)實例:
?
?
?
?
6、Redis Llen命令
(1)說明:Redis Llen命令用于返回列表的長度;如果列表不存在,則key被解釋為一個空列表,返回0;如果key不是列表類型,返回一個錯誤
(2)語法:redis 127.0.0.1:6379> LLEN KEY_NAME;返回列表的長度
(3)實例:
?
?
?
7、Redis Lpop命令
(1)說明:Redis Lpop命令用于移除并返回列表的第一個元素;
(2)語法:redis 127.0.0.1:6379> Lpop KEY_NAME ;返回列表的第一個元素;當列表key不存在時,返回nil;
(3)實例:
實際返回:
?
?
?
預計返回:
?
?
?
8、Redis Lpush命令
(1)說明:Redis Lpush命令將一個或多個值插入到列表頭部;如果key不存在,一個空列表會被創建并執行LPUSH操作;當key存在但不是列表類型時,返回一個錯誤;
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。
(2)語法:redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN;執行LPUSH命令后,返回列表的長度
(3)實例:
?
?
?
9、Redis Lpushx命令(對比?8 是否有不同區別)
(1)說明:Redis Lpushx命令將一個值插入到已存在的列表頭部,列表不存在時,操作無效
(2)語法:redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN;LPUSHX命令執行后,返回列表的長度
(3)實例:
?
?
10、Redis Lrange命令
(1)說明:Redis Lrange命令返回列表中指定區間內的元素,區間以偏移量START和END指定;其中0表示列表的第一個元素,1表示列表的第二個元素,以此類推;你也可以使用負數下標,以-1表示列表的最后一個元素,-2表示列表的倒數第二個元素,以此類推。
(2)語法:redis 127.0.0.1:6379> LRANGE KEY_NAME START END;返回一個列表,包含指定區間內的元素
(3)實例:
?
?
?
11、Redis Lrem命令
(1)說明:Redis Lrem命令根據參數COUNT的值,移除列表中與參數VALUE相等的元素,COUNT的值可以是以下幾種:
count>0:從表頭開始向表尾搜索,移除與VALUE相等的元素,數量為COUNT;
count<0:從表尾開始向表頭搜索,移除與VALUE相等的元素,數量為COUNT的絕對值;
count=0:移除表中所有與VALUE相等的值
(2)語法:redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE;被移除元素的數量,列表不存在時返回0
(3)實例:
?
?
?
12、Redis Lset命令
(1)說明:Redis Lset命令通過索引來設置元素的值;當索引參數超出范圍,或對一個空列表進行LSET時,返回一個錯誤
(2)語法:redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE;操作成功返回ok,否則返回錯誤信息
(3)實例:
?
?
?
13、Redis Ltrim命令
(1)說明:Redis Ltrim命令對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除;下標0表示列表的第一個元素,以1表示列表的第二個元素,以此類推;你也可以使用負數下標,以-1表示列表的最后一個元素,-2表示列表的倒數第二個元素,以此類推。
(2)語法:redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP;命令執行成功時,返回ok
(3)實例:
?
?
?
14、Redis Rpop命令:
(1)說明:Redis Rpop命令用于移除返回列表的最后一個元素
(2)語法:redis 127.0.0.1:6379> RPOP KEY_NAME ;返回移除的最后一個元素;當列表不存在時,返回nil
(3)實例:
?
?
?
15、Redis Rpoplpush命令
(1)說明:Redis Rpoplpush命令用于移除列表的最后一個元素,并將該元素添加到另一個列表并返回
(2)語法:redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME;返回被彈出的元素
(3)實例:
?
?
?
?
16、Redis Rpush命令
(1)說明:Redis Rpush命令用于將一個或多個值插入到列表的尾部(最右邊);如果列表不存在,一個空列表會被創建并執行RPUSH操作;當列表存在但不是列表類型時,返回一個錯誤;
注意:在?Redis 2.4 版本以前的 RPUSH 命令,都只接受單個 value 值。
(2)語法:redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN;執行RPUSH操作后,列表的長度
(3)實例:
?
?
?
17、Redis Rpushx命令:
(1)說明:Redis Rpushx命令用于將一個值插入到已存在的列表尾部(最右邊);如果列表不存在,操作無效
(2)語法:redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN;返回執行Rpush操作后,列表的長度
(3)實例:
?
?
?
?
?
?