redis命令之set和zset的操作
redis里面常用的操作set類型(每個元素都是一個值)的命令:
sadd? key member1 [member2 member3 ....]:向key對應的set中添加
sinter set1 set2:交集?
sunion? set1 set2:并集
sdiff? set1 set2:差集 前后順序影響結果
smembers key :查詢所有元素
sismember oneset member:查詢member是否在oneset?中,返回0或1
scard key:返回set的元素個數
smove sourceset? destinationset? member:把member從源集合sourceset移動到目標集合destinationset??
srem? oneset? value1 value2...:從oneset??表示的set中刪除元素value1? value2....
redis里面的set與list有什么區別?
????????set是無序的,因此沒有像list那樣的在頭部插入還是在尾部插入的說法。set中放入的元素也沒有先后之分。跟list相同的是,你也可以把set理解成一個箱子,往里面放東西就是了。
1.定義兩個set,一個叫friends,元素有xinjiao qinghuai zhao qian;一個叫workmate,元素有fanfan caodan zhao? sun?
192.168.23.112:6379>?sadd?friends?xinjiao?qinghuai?zhao?qian (integer)?4 192.168.23.112:6379>?sadd?workmate?fanfan?caodan?zhao??sun (integer)?4 192.168.23.112:6379>?smembers?workmate 1)?"caodan" 2)?"fanfan" 3)?"sun" 4)?"zhao" 192.168.23.112:6379>?smembers?workmate 1)?"caodan" 2)?"fanfan" 3)?"sun" 4)?"zhao" 192.168.23.112:6379>?scard?friends (integer)?42.求集合set的交集、并集、差集
192.168.23.112:6379>?sinter?friends?workmate 1)?"zhao" 192.168.23.112:6379>?sunion?friends?workmate 1)?"qinghuai" 2)?"sun" 3)?"fanfan" 4)?"qian" 5)?"xinjiao" 6)?"caodan" 7)?"zhao" 192.168.23.112:6379>?sdiff?friends?workmate 1)?"xinjiao" 2)?"qian" 3)?"qinghuai" 192.168.23.112:6379>?sdiff??workmate??friends 1)?"fanfan" 2)?"caodan" 3)?"sun"注意:這些集合的交集、并集、差集操作并不會影響redis集合里面的值,只是求出計算后的結果罷了。
3.判斷一個元素在集合中是否存在用sismember,存在返回1,不存在返回0
192.168.23.112:6379>?sismember?friends?haha (integer)?0 192.168.23.112:6379>?sismember?friends?zhao (integer)?14.元素在集合之間的移動
192.168.23.112:6379>?smove?friends?workmate?qian (integer)?1 192.168.23.112:6379>?smembers?friends 1)?"xinjiao" 2)?"qinghuai" 3)?"zhao" 192.168.23.112:6379>?smembers?workmate 1)?"caodan" 2)?"fanfan" 3)?"sun" 4)?"zhao" 5)?"qian"說明:smove第一個參數是源頭,第二個參數是目的地,第三個參數是要移動的值。
再來看看zset命令。
???zset在redis里面指的是sort set類型,顧名思義,這種類型就是可以排序的set,因為在zset里面的每個元素都是值和權的集合,redis里面常用的zset相關命令如下:
zadd zset1 score1 member1 [score2 member2....]:如 zadd topic 33 9 ,id位9的帖子點擊量為33
zrevrange zset1 [start end] withscores:把zset1按權逆序排列,返回排列后的member,start end指定要操作的個數,下標從0開始,[]表示閉區間,下同,withscores可加可不加,表示是否顯示member對應的權值
zrange zset1 [start end] withscores:和zrevrange類似,只不過是正常順序排列,withscores可加可不加,表示是否顯示score
zrank zset1?member:把名為zset1的sort set 按權從小到大排序,并返回member在排序后的zset中的下標(從0開始)
zrevrank zset1?member:類似zrank,唯一不同的是zrevrank是按權從大到小排序
zcard zset1:zset1里面的元素個數
zscore zset1 member:返回member對應的權值
zrem zset1? member:按member名稱來刪除指定元素
zincrby zset1 num member:按num的大小增加member在zset1中的權值,即修改menber的權值
zremrangebyrank zset1 [min max]:先按權按從小到大來排序,再刪除下標在min和max之間的元素,min 和max分別指從0開始的下標
zcount zset1 [min max]:返回score值在min和max之間的元素個數
一、定義一個aihao的有序集合
192.168.23.112:6379>?zadd?aihao?100?play??50?work?60?read?90?money?88?film?0?sad?99??happy (integer)?7二、zrange與zrevrange,可以看到zrange就是取出aihao里面的members成員,并默認按權值從小到大的順序排序?
192.168.23.112:6379>?zrange?aihao?0?100 1)?"sad" 2)?"work" 3)?"read" 4)?"film" 5)?"money" 6)?"happy" 7)?"play" 192.168.23.112:6379>?zrange?aihao?0?100?withscores1)?"sad"2)?"0"3)?"work"4)?"50"5)?"read"6)?"60"7)?"film"8)?"88"9)?"money" 10)?"90" 11)?"happy" 12)?"99" 13)?"play" 14)?"100" 192.168.23.112:6379>?zrevrange?aihao?0?100 1)?"play" 2)?"happy" 3)?"money" 4)?"film" 5)?"read" 6)?"work" 7)?"sad" 192.168.23.112:6379>?zrevrange?aihao?0?100?withscores1)?"play"2)?"100"3)?"happy"4)?"99"5)?"money"6)?"90"7)?"film"8)?"88"9)?"read" 10)?"60" 11)?"work" 12)?"50" 13)?"sad" 14)?"0"三、zrank與zrevrank,拿zrank來說,其實就是先把aihao執行zrange排序,再取出happy在排序后的集合中的下標并返回
192.168.23.112:6379>?zrank?aihao?happy (integer)?5 192.168.23.112:6379>?zrevrank?aihao?happy (integer)?1四、修改已有member的權值
192.168.23.112:6379>?zincrby?aihao?5?money "95" 192.168.23.112:6379>?zscore?aihao?money "95"五、zremrangebyrank?
192.168.23.112:6379>?zrange?aihao?0?100 1)?"sad" 2)?"work" 3)?"read" 4)?"film" 5)?"money" 6)?"happy" 7)?"play" 192.168.23.112:6379>?zremrangebyrank?aihao?1?2 (integer)?2 192.168.23.112:6379>?zrange?aihao?0?100 1)?"sad" 2)?"film" 3)?"money" 4)?"happy" 5)?"play"六、zcount返回權值在指定區間內的元素個數
192.168.23.112:6379>?zrange?aihao?0?100?withscores1)?"sad"2)?"0"3)?"film"4)?"88"5)?"money"6)?"95"7)?"happy"8)?"99"9)?"play" 10)?"100" 192.168.23.112:6379>?zcount?aihao?0?90 (integer)?2總結
以上是生活随笔為你收集整理的redis命令之set和zset的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QActionGroup - setEx
- 下一篇: linux定时任务nodejs,让Nod