一、Set類型redis
Set和List類似,都能存儲多個字符串,Set中的字符串不能存在相同的元素,而且是無序的bash
命令SADD,給集合中添加一個或多個成員code
127.0.0.1:6379> sadd se_test member1 member2 (integer) 2 127.0.0.1:6379> smembers se_test 1) "member1" 2) "member2"
命令SMEMBERS,獲取集合中的全部成員排序
命令SCARD,獲取集合中成員的個數v8
127.0.0.1:6379> scard se_test (integer) 2
命令SDIFF,獲取給的第一個集合和後面全部集合的差集(只有集合a有的值,後面集合都沒有的值)rem
127.0.0.1:6379> sadd se_test1 1 2 key (integer) 3 127.0.0.1:6379> sadd se_test2 1 3 5 (integer) 3 127.0.0.1:6379> sadd se_test3 2 4 6 (integer) 3 127.0.0.1:6379> sdiff se_test1 se_test2 1) "2" 2) "key" 127.0.0.1:6379> sdiff se_test1 se_test2 se_test3 1) "key"
命令SDIFFSTORE,獲取給的第一個集合和後面全部集合的差集(只有集合a有的值,後面集合都沒有的值),而且將差集放入另外一個集合字符串
127.0.0.1:6379> sdiffstore se_dest se_test1 se_test2 se_test3 (integer) 1 127.0.0.1:6379> smembers se_dest 1) "key"
命令SINTER,得到給定集合的交集get
127.0.0.1:6379> smembers se_test1 1) "2" 2) "key" 3) "1" 127.0.0.1:6379> smembers se_test2 1) "1" 2) "3" 3) "5" 127.0.0.1:6379> smembers se_test3 1) "2" 2) "4" 3) "6" 127.0.0.1:6379> sinter se_test1 se_test2 se_test3 (empty list or set) 127.0.0.1:6379> sinter se_test1 se_test2 1) "1"
命令SINTERSTORE,得到給定集合的交集,並將交集放到另外一個集合hash
127.0.0.1:6379> sadd se_test1 1 2 key (integer) 3 127.0.0.1:6379> sadd se_test2 1 3 5 (integer) 3 127.0.0.1:6379> sinterstore se_dest se_test1 se_test2 (integer) 1 127.0.0.1:6379> smembers se_dest 1) "1"
命令SISMEMBER,判斷給的值在不在該集合中it
127.0.0.1:6379> sismember se_test1 1 (integer) 1 127.0.0.1:6379> sismember se_test1 3 (integer) 0
命令SMOVE,將一個集合的值移動到另外一個集合中
127.0.0.1:6379> smove se_test1 se_test2 key (integer) 1 127.0.0.1:6379> smembers se_test2 1) "5" 2) "3" 3) "key" 4) "1" 127.0.0.1:6379> smembers se_test1 1) "2" 2) "1"
命令SPOP,隨機彈出幾個成員
127.0.0.1:6379> spop se_test2 2 1) "5" 2) "1" 127.0.0.1:6379> smembers se_test2 1) "3" 2) "key"
命令SRANDMEMBER,隨機獲取幾個成員
127.0.0.1:6379> smembers se_test2 1) "5" 2) "3" 3) "1" 4) "key" 5) "4" 127.0.0.1:6379> srandmember se_test2 3 1) "1" 2) "key" 3) "4" 127.0.0.1:6379> srandmember se_test2 3 1) "key" 2) "5" 3) "4" 127.0.0.1:6379> srandmember se_test2 3 1) "1" 2) "5" 3) "4"
命令SREM,從集合中移除幾個成員
127.0.0.1:6379> srem se_test2 1 (integer) 1 127.0.0.1:6379> smembers se_test2 1) "3" 2) "key" 3) "5" 4) "4"
命令SUNION,合併集合
127.0.0.1:6379> smembers se_test2 1) "3" 2) "key" 3) "5" 4) "4" 127.0.0.1:6379> smembers se_test1 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> sunion se_test1 se_test2 1) "3" 2) "key" 3) "1" 4) "2" 5) "4" 6) "5"
命令SUNIONSTORE,合併集合並添加到另外一個集合中去
127.0.0.1:6379> sunionstore se_test3 se_test1 se_test2 (integer) 6 127.0.0.1:6379> smembers se_test3 1) "3" 2) "key" 3) "1" 4) "2" 5) "4" 6) "5"
命令SSCAN,集合元素的迭代器
127.0.0.1:6379> smembers se_test3 1) "6" 2) "12" 3) "7" 4) "2" 5) "3" 6) "10" 7) "5" 8) "11" 9) "9" 10) "key" 11) "1" 12) "4" 13) "8" 14) "13" 127.0.0.1:6379> sscan se_test3 0(0表明開始一次新的迭代) 1) "7"(返回7表明尚未迭代完成,返回的count默認爲10,可是可能會返回多與10個) 2) 1) "12" 2) "7" 3) "5" 4) "4" 5) "3" 6) "2" 7) "9" 8) "6" 9) "8" 10) "10" 11) "key" 12) "1" 127.0.0.1:6379> sscan se_test3 7 1) "0"(返回0表明迭代完成) 2) 1) "11" 2) "13" 127.0.0.1:6379> sscan se_test3 0 count 5 (指定count爲5) 1) "6" 2) 1) "12" 2) "7" 3) "5" 4) "4" 5) "3" 127.0.0.1:6379> sscan se_test3 6 count 5 1) "7" 2) 1) "2" 2) "9" 3) "6" 4) "8" 5) "10" 6) "key" 7) "1" 127.0.0.1:6379> sscan se_test3 7 count 5 1) "0" 2) 1) "11" 2) "13" 127.0.0.1:6379> sscan se_test3 7 count 5 match 1*(match參數能夠進行值的匹配操做) 1) "0" 2) 1) "11" 2) "13"
二、Hash類型
redis 的散列能夠存儲多個鍵值對之間的映射。值能夠是字符串也能夠是數字,對數字一樣能夠進行自增自減操做。
命令HSET,給一個hash的一個字段設置值
127.0.0.1:6379> hset h_test name zhangsan (integer) 1 127.0.0.1:6379> hget h_test name "zhangsan"
命令HDEL,刪除hash中的一個或者多個字段
127.0.0.1:6379> hdel h_test name (integer) 1 127.0.0.1:6379> hget h_test name (nil)
命令HEXISTS,判斷一個hash中有沒有某個字段
127.0.0.1:6379> hexists h_test name (integer) 0
命令HMSET,給一個hash設置多個值
127.0.0.1:6379> hmset h_test name zhangsan age 18 sex 1 OK
命令HMGET,得到一個hash、中的多個字段值
127.0.0.1:6379> hmget h_test name age sex 1) "zhangsan" 2) "18" 3) "1"
命令HGETALL,得到一個hash中的全部字段和值
127.0.0.1:6379> hgetall h_test 1) "name" 2) "zhangsan" 3) "age" 4) "18" 5) "sex" 6) "1"
命令HINCRBY,hash中某個字段的值進行自增操做
127.0.0.1:6379> hincrby h_test age 3 (integer) 21 127.0.0.1:6379> hgetall h_test 1) "name" 2) "zhangsan" 3) "age" 4) "21" 5) "sex" 6) "1"
命令HINCRBYFLOAT,hash中的某個字段增長浮點型值
127.0.0.1:6379> hset h_test score 60.5 (integer) 1 127.0.0.1:6379> hgetall h_test 1) "name" 2) "zhangsan" 3) "age" 4) "21" 5) "sex" 6) "1" 7) "score" 8) "60.5" 127.0.0.1:6379> hincrbyfloat h_test score 12.5 "73"
命令HKEYS,返回hash中的全部字段
127.0.0.1:6379> hkeys h_test 1) "name" 2) "age" 3) "sex" 4) "score"
命令HLEN,返回hash中有幾個字段
127.0.0.1:6379> hlen h_test (integer) 4
命令HSETNX,若是hash中沒有這個字段,就給這個字段設置值
127.0.0.1:6379> hsetnx h_test age 22 (integer) 0 127.0.0.1:6379> hsetnx h_test address china (integer) 1
命令HSTRLEN,得到hash中某個字段值的長度
127.0.0.1:6379> hstrlen h_test address (integer) 5
命令HVALS,得到hash中的全部值
127.0.0.1:6379> hvals h_test 1) "zhangsan" 2) "21" 3) "1" 4) "73" 5) "china"
命令HSCAN,hash類型的遊標迭代器
127.0.0.1:6379> hscan h_test 0 1) "0" 2) 1) "name" 2) "zhangsan" 3) "age" 4) "21" 5) "sex" 6) "1" 7) "score" 8) "73" 9) "address" 10) "china" 11) "f1" 12) "v1" 13) "f2" 14) "v2" 15) "f3" 16) "v3" 17) "f4" 18) "v4" 19) "f5" 20) "v5" 21) "f6" 22) "v6" 23) "f7" 24) "v7" 25) "f8" 26) "v8" 27) "f9" 28) "v9" 29) "f10" 30) "v10" 31) "f11" 32) "v11" 33) "f12" 34) "v12" 35) "f13" 36) "v13" 37) "f14" 38) "v14" 39) "f15" 40) "v15" 41) "f16" 42) "v16" 43) "f17" 44) "v17" 45) "f18" 46) "v18" 47) "f19" 48) "v19" 49) "f20" 50) "v20" 127.0.0.1:6379> hscan h_test 0 count 3 match f* 1) "0" 2) 1) "f1" 2) "v1" 3) "f2" 4) "v2" 5) "f3" 6) "v3" 7) "f4" 8) "v4" 9) "f5" 10) "v5" 11) "f6" 12) "v6" 13) "f7" 14) "v7" 15) "f8" 16) "v8" 17) "f9" 18) "v9" 19) "f10" 20) "v10" 21) "f11" 22) "v11" 23) "f12" 24) "v12" 25) "f13" 26) "v13" 27) "f14" 28) "v14" 29) "f15" 30) "v15" 31) "f16" 32) "v16" 33) "f17" 34) "v17" 35) "f18" 36) "v18" 37) "f19" 38) "v19" 39) "f20" 40) "v20"
三、ZSET類型
有序集合的鍵被稱爲成員,每一個成員都是不相同的,有序集合的值被稱爲分值,分值必須爲浮點數。有序集合是redis裏面惟一一個既能夠根據成員訪問元素,又能夠根據分值以及分值的排列順序來訪問元素的結構。
命令ZADD,爲zset增長一個或者多個成員,或者若是分數以及存在了就進行更新操做
127.0.0.1:6379> zadd z_test 10 m1 20 m2 15 m3 (integer) 3 127.0.0.1:6379> zadd z_test nx 10 m5(nx,若是存就不進行增長,永遠會增長元素) (integer) 1 127.0.0.1:6379> zadd z_test nx 11 m5 (integer) 0 127.0.0.1:6379> zadd z_test xx 21 m5(xx,只在元素已經存在的狀況下進行修改,永遠不會新增元素) (integer) 0 127.0.0.1:6379> zrange z_test 0 -1 withscores 1) "m1" 2) "10" 3) "m4" 4) "12" 5) "m3" 6) "15" 7) "m2" 8) "20" 9) "m5" 10) "21" 127.0.0.1:6379> zadd z_test incr 21 m5(給m5增長21分值) "42" 127.0.0.1:6379> zrange z_test 0 -1 withscores 1) "m1" 2) "10" 3) "m4" 4) "12" 5) "m3" 6) "15" 7) "m2" 8) "20" 9) "m5" 10) "42" 127.0.0.1:6379> zadd z_test ch 11 m1 6 m6 3 m3(ch等同於change,會返回修改元素的個數,包括新增的元素,和分值被修改的元素,不加ch參數的化只會返回新增的數目) (integer) 2
命令ZCARD,得到有序集合的成員個數
127.0.0.1:6379> zcard z_test (integer) 6
命令ZCOUNT,得到有序集合在某個分值段內的個數
127.0.0.1:6379> zrange z_test 0 -1 withscores 1) "m2" 2) "2" 3) "m3" 4) "3" 5) "m4" 6) "4" 7) "m5" 8) "6" 9) "m6" 10) "6" 11) "m1" 12) "11" 127.0.0.1:6379> zcount z_test 5 11 (integer) 3
命令ZINCRBY,給集合內的某個元素的分值增長多少
127.0.0.1:6379> zincrby z_test 2 m5 "8"
命令ZINTERSTORE,多個有序集合取交集,並保存到一個新的集合
127.0.0.1:6379> zinterstore z_dest 2 z_test z_test1 weights 2 3 (integer) 1 127.0.0.1:6379> zrange z_dest 0 -1 1) "m6" 127.0.0.1:6379> zrange z_dest 0 -1 withscores 1) "m6" 2) "30" 127.0.0.1:6379> zinterstore z_dest 2 z_test z_test1 weights 2 3 aggregate min (integer) 1 127.0.0.1:6379> zrange z_dest 0 -1 withscores 1) "m6" 2) "12" 127.0.0.1:6379> zinterstore z_dest 2 z_test z_test1 weights 2 3 aggregate max (integer) 1 127.0.0.1:6379> zrange z_dest 0 -1 withscores 1) "m6" 2) "18" 127.0.0.1:6379> zinterstore z_dest 2 z_test z_test1 weights 2 3 aggregate sum (integer) 1
命令ZLEXCOUNT,得到集合某個區間的成員個數
127.0.0.1:6379> zrange z_test 0 -1 withscores 1) "m2" 2) "2" 3) "m3" 4) "3" 5) "m4" 6) "4" 7) "m6" 8) "6" 9) "m5" 10) "8" 11) "m1" 12) "11" 127.0.0.1:6379> zlexcount z_test [m2 [m5 (integer) 0 127.0.0.1:6379> zlexcount z_test [m2 + (integer) 0 127.0.0.1:6379> zlexcount z_test [2 + (integer) 6 127.0.0.1:6379> zlexcount z_test [2 [11 (integer) 0 127.0.0.1:6379> zlexcount z_test [2 [6 (integer) 0 127.0.0.1:6379> zlexcount z_test [2 [m5 (integer) 3 127.0.0.1:6379> zlexcount z_test [m2 [m5 (integer) 0
命令ZRANGEBYLEX,得到集合某個區間的成員,正序排列
127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g (integer) 7 127.0.0.1:6379> ZRANGEBYLEX myzset - [c 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> ZRANGEBYLEX myzset - (c 1) "a" 2) "b" 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g 1) "b" 2) "c" 3) "d" 4) "e" 5) "f"
命令ZRANGEBYLEX,得到集合某個區間的成員,倒敘排列
命令ZRANGEBYSCORE,根據score獲取分值區間的成員
127.0.0.1:6379> zrangebyscore myzset 0 10 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 7) "g" 127.0.0.1:6379> zrangebyscore myzset 0 10 limit 2 2 1) "c" 2) "d"
命令ZRANK,獲取某個成員的排名
127.0.0.1:6379> zrank myzset c (integer) 2 127.0.0.1:6379> zrank myzset e (integer) 4
命令ZREM,移除一個或者多個成員
127.0.0.1:6379> zrem myzset c e (integer) 2 127.0.0.1:6379> zrange myzset 0 -1 1) "a" 2) "b" 3) "d" 4) "f" 5) "g"
命令ZREMRANGEBYLEX,移除某個區間內的成員
127.0.0.1:6379> zrange myzset 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 7) "g" 127.0.0.1:6379> zremrangebylex myzset [b [f (integer) 5 127.0.0.1:6379> zrange myzset 0 -1 1) "a" 2) "g"
命令ZREMRANGEBYRANK,移除排名段內的成員
127.0.0.1:6379> zrange myzset 0 -1 1) "a" 2) "b" 3) "c" 4) "e" 5) "f" 6) "g" 127.0.0.1:6379> zremrangebyrank myzset 2 5 (integer) 4 127.0.0.1:6379> zrange myzset 0 -1 1) "a" 2) "b"
命令ZREMRANGEBYSCORE,移除分數段內的成員
127.0.0.1:6379> zremrangebyscore myzset 0 1 (integer) 2 127.0.0.1:6379> zrange myzset 0 -1 (empty list or set)
命令ZREVRANGE,反向排序
127.0.0.1:6379> zadd myzset 0 c 1 e 2 b 3 f (integer) 4 127.0.0.1:6379> zrevrange myzset 1 3 1) "b" 2) "e" 3) "c"
命令ZREVRANGEBYSCORE,根據分數段進行反向排序
127.0.0.1:6379> zrevrangebyscore myzset 3 1 1) "f" 2) "b" 3) "e"
命令ZREVRANK,根據排名進行反向排序
127.0.0.1:6379> zrevrank myzset b (integer) 1 127.0.0.1:6379> zrevrank myzset f (integer) 0
命令ZSCORE,根據給的成員得到分數
127.0.0.1:6379> zscore myzset f "3"
命令ZUNIONSTORE,取並集而且將並集放入一個有序集合