1、redis中list列表的資料插入命令:lpush,rpush,linsert
127.0.0.1:6379>rpush mylist 1 ---結果為:(integer) 1
127.0.0.1:6379>rpush mylist 2 ---結果為:(integer) 2
127.0.0.1:6379>rpush mylist 3 ---rpush命令:向mylist列表中,從右邊插入3條資料,返回值為當前列表的容量。結果為:(integer) 3
127.0.0.1:6379>lrange mylist 0 -1 ---lrange命令:檢視mylist列表中的資料,0開始位置,-1結束位置,結束位置為-1時,表示列表的最後乙個位置,即檢視所有。結果為:1> "1" 2> "2" 3> "3"
127.0.0.1:6379>lpush mylist 0 ---lpush命令:向mylist列表中,從左邊插入一條資料為0的資料
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"0" 2>"1" 3>"2" 4>"3"
127.0.0.1:6379>linsert mylist after 3 4 ---linsert命令,表示式為linsert key before|after pivot value ;這句命令的意思是在key為mylist的列表中查詢值為3的資料,在其後插入一條值為4的資料。
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"0" 2>"1" 3>"2" 4>"3" 5>"4"
127.0.0.1:6379>linsert mylist before 0 -1 ---意思是:在key為mylist的列表中查詢值為0的資料,在其前插入一條值為-1的資料。
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"-1" 2>"0" 3>"1" 4>"2" 5>"3" 6>"4"
127.0.0.1:6379>linsert mylist after 5 8 ---結果為:-1,由於mylist列表不存在值為5的資料,所以不執行任何操作,返回狀態值-1。如果key不存在時,返回值為0。
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"-1" 2>"0" 3>"1" 4>"2" 5>"3" 6>"4"
2、redis中list列表的資料刪除命令:lpop,rpop
127.0.0.1:6379>lpop mylist ---lpop命令:從列表中的左邊移除一條資料,同時輸出被刪除的資料,這裡輸出的結果為-1
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"0" 2>"1" 3>"2" 4>"3" 5>"4"
127.0.0.1:6379>rpop mylist ---rpop命令:從列表的右邊移除一條資料,同時輸出被刪除的資料,這裡輸出的結果為4
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"0" 2>"1" 3>"2" 4>"3"
127.0.0.1:6379>ltrim mylist 1 3 ----ltrim命令:保留設定的兩個下標區間的值,刪除不在其區間的所有值。1為開始保留的下標值,3為結束保留的下標值。
127.0.0.1:6379>lrange mylist 0 -1 ---結果為:1>"1" 2>"2" 3>"3"
3、redis中list列表的資料檢視命令:lrange,llen,lindex
127.0.0.1:6379>llen mylist ---llen命令:返回列表的長度,這裡mylist只剩下4條資料,故輸出結果為4
127.0.0.1:6379>lindex mylist 3 ---lindex命令:獲取給定位置的資料,這裡座標為3的資料是"2",所以結果為2.
4、redis中list列表資料修改命令:lset
127.0.0.1:6379>lset mylist 2 zlh ---lset命令:把下標為2的值設定為zlh,如果下標值超出範圍或對乙個空list列表進行lset,那麼將返回乙個錯誤提示
127.0.0.1:6379>lrange mylist 0 -1 ---結果為: 1>"1" 2>"2" 3>"zlh"
5、redis中list列表,兩個列表a,b,將a列表的尾元素新增到b列表的頭元素中,命令:rpoplpush
#這裡我有連個列表a資料為 ,b列表資料為
127.0.0.1:6379>rpoplpush a b
127.0.0.1:6379>lrange a ---結果為:1>"1' 2>"2"
127.0.0.1:6379>lrange b ---結果為:1>"3' 2>"4" 3>"5" 4>"6"
6、redis中的幾個帶阻塞的高階命令:blpop,brpop,brpoplpush
127.0.0.1:6379>blpop a 30 ---意思是:a列表有值的話,從左邊移除乙個資料,如果沒有值的話,則等待a中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長
127.0.0.1:6379>brpop a 30 ---意思是:a列表有值的話,從又邊移除乙個資料,如果沒有值的話,則等待a中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長
127.0.0.1:6379>brpoplpush a b 30 ---意思是:將a列表的尾元素新增到b列表的頭元素中,如果a列表中有值則插入,如果沒值,則等待a中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長
1、首先redis中的list是鍊錶結構,具備訊息佇列中的先進先出特徵。
2、從上面的幾個高階命令中可以看出,list有幾個自帶阻塞功能,時間設定為0,可以視為永不休息的監聽程序。
Redis資料結構詳解之List(二)
思來想去感覺redis中的list沒什麼好寫的,如果單寫幾個命令的操作過於乏味,所以本篇最後我會根據redis中list資料型別的特殊屬性,同時對比成熟的訊息佇列產品rabbitmq,使用redis實現乙個訊息佇列。為啦讓本篇更有魅力,我再介紹下redis中list的基本屬性,以及為什麼使用redi...
Redis資料結構詳解之Set(三)
在redis中,set和list都是字串序列,非常相似,不同之處在於set是用雜湊表來保持字串的唯一性,沒有先後順序,不像list一樣,可以在首尾增刪資料。但是set也有自己的相應處理命令來完成對自己的操作。下面我們來看下set的命令怎麼使用。redis中set列表的新增命令sadd,key值相同下...
Redis資料結構詳解之Hash(四)
hash資料結構累似c 中的dictionary,大家對陣列應該比較了解,陣列是通過索引快速定位到指定元素的,無論是訪問陣列的第乙個元素還是最後乙個元素,所耗費的時間都是一樣的,但是陣列中的索引卻沒有實際意義,他只是乙個位置而已。而我們在查詢某個元素時,一般都會使用有意義的字段來做索引,這就產生啦d...