一、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,取并集而且将并集放入一个有序集合