1. 程式人生 > >記redis中向list進行lpush和lrange時的小細節(初學者易犯)

記redis中向list進行lpush和lrange時的小細節(初學者易犯)

向k1中從左向右push

向k2中從右向左push 

> lpush k1 1,2,3,4,5
(integer) 1
> LRANGE k1 0 -1
1) "1,2,3,4,5"
> rpush k2 1,2,3,4,5
(integer) 1
> lrange k2 0 -1
1) "1,2,3,4,5"


然後分別使用lrange返回兩個list中的元素,按道理,應該第一個為1,2,3,4,5,第二個為5,4,3,2,1 ,但最後結果卻是一樣的,我還以為是redis4.0版本中新改了呢,還去官網看了下(@_@;),然而並沒有發現關於lrange使用有改變的說明。最後才發現,原來是寫錯了。1,2,3,4,5這種寫法放到list裡,就會被認為是一個整體字串,這也能從返回結果中看出只是push了一個元素而已,正確的寫法是不要在向list新增的元素間加逗號!正確寫法:

> lpush k1 1 2 3 4 5
(integer) 5      //看,這裡顯示5了,而不是1!
> LRANGE k1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
> lpush k2 5 4 3 2 1
(integer) 5
> LRANGE k2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

之所以會誤寫成lpush 1,2,3,4,5,主要還是因為我們習慣於在這種寫法下給各個元素間加逗號(比如陣列( ̄▽ ̄)")。雖然是一個很愚蠢的筆誤,但卻是不容忽視的,任何需要注意的細節都應該牢記於心 ,因為有些細節的東西不注意,等出錯的時候還真一時找不出原因。