| 解释 |
Zadd | Zadd key-name score member [score member…]——将带有给定分值的成员添加到有序列表里面 |
Zrem | Zrem key-name member [member…]——从有序集合里面移除给定的成员,并返回被移除成员的数量 |
Zcard | Zcard key-name——返回有序集合包含的成员数量 |
Zincrby | Zincrby key-name increment member——将member成员的分值加上increment |
Zcount | Zcount key-name min max——返回分值介于min和max之间的成员数量,包括min和max在内 |
Zrank | Zrank key-name member——返回成员member在有序集合中的排名,成员按照分值从小到大排列 |
Zrevrank | Zrevrank key-name member——返回成员member在有序集合中的排名 ,成员按照分值从大到小排列 |
Zscore | Zscore key-name member——返回成员member的分值 |
Zrange | Zrange key-name start stop [WITHSCORES]——返回有序集合中排名介于start和stop之间的成员,包括start和stop在内,如果给定了可选的WITHSCORES选项,那么命令会将成员的分值一并返回,成员按照分值从小到大排列 |
Zrevrange | Zrevrange key-name start stop [WITHSCORES]——返回有序集合中排名介于start和stop之间的成员,包括start和stop在内,如果给定了可选的WITHSCORES选项,那么命令会将成员的分值一并返回,成员按照分值从大到小排列 |
Zrangebyscore | Zrangebyscore key-name min max [WITHSCORES] [LIMIT offset count]——返回有序集合中分值介于min和max之间的所有成员,包括min和max在内,并按照分值从小到大的排序来返回他们 |
Zrevrangebyscore | Zrevrangebyscore key-name min max [WITHSCORES] [LIMIT offset count]——返回有序集合中分值介于min和max之间的所有成员,包括min和max在内,并按照分值从大到小的排序来返回他们 |
Zremrangebyrank | Zremrangebyrank key-name start stop——移除有序集合中排名介于start和stop之间的所有成员,包括start和stop在内 |
Zremrangebyscore | Zremrangebyscore key-name key min max——移除有序集合中分值介于min和max之间的所有成员,包括min和max在内 |
Zinterstore | Zinterstore dest-key key-count key [key…][WEIGHTS weight [weight…]] [AGGREGATE SUM|MIN|MAX]——对给定的有序集合执行类似于集合的交集运算 |
Zunionstore | Zunionstore dest-key key-count key [key…][WEIGHTS weight [weight…]] [AGGREGATE SUM|MIN|MAX]——对给定的有序集合执行类似于集合的并集运算 |
基本命令:Hash操作
学习前先明确一下概念,这里我们把Redis的key称作key(键),把数据结构hash中的key称为field(域)。
hdel key field[field...]
删除hash表中的一个或多个指定域,若key或field不存在则会忽略;例:hdel hk k1 k2。
hexists key field
判断hash表中指定域是否存在,返回1,若key或field不存在则返回0;例:hexists hk k1。
hget key field
获取hash表中指定域的值,key或域不存在时返回nil;例:hget hk k1。
hgetall key
获取hash表中所有域的值;例:hgetall hk,返回结果如:
1) k1
2) v1
3) k2
4) v2
5) k3
6) v3
1和2、3和4、5和6各为一组,代表hash表的field和value。
hincrby key field increment
为hash表中的指定域增加指定的整数值(负数亦可),若域不存在则默认初始化值为0后再进行操纵,若域存在但值不为数值但非64位有符号数时返回错误;例:hincrby hk k1 15。
hincrbyfloat key field increment
和hincrby相似,不同的是hincrbyfloat操作的是浮点数;例:hincrbyfloat hk k1 1.3。
hkeys key
返回hash表中的所有域,若key不存在返回空;例:hkeys hk。
hvals key
返回hash表中的所有val,若key不存在返回空;例:hvals hk。
hlen key
返回hash表中所有域的数量,若key不存在返回0;例:hlen hk。
hset key field value
将field-value设置到hash表中,若key不存在会新建hash表再赋值,若field已存在则会覆盖现有值;例:hset hk k v。
hsetnx key field value
和hset类似,但是hsetnx要求field不存在才能进行此操作,否则会返回0;例:hset hk k v。
hmget key field[field...]
返回hash表中多个指定域的值,若key不存在返回空,若field不存在返回nil;例:hmget hk k1 k2 k3。
hmset key field1 value1[field value...]
将一个或多个field-value设置到hash表中;例:hmset hk k4 v4 k5 v5 k6 v6。
hscan key cursor[match pattern][count count]
采用游标的方式对当前的hash进行迭代(具体描述请参考scan),例:hscan hk 0。
Redis系列set主要操作函数小结
redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。
1、增加
语法:sadd key member[member...]
解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。
[plain] view plain copy
1. [root@xsf001 ~]# redis-cli
2. redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
3. (integer) 3
4. redis 127.0.0.1:6379> smembers stu #得到set的所有member
5. 1) "wangwu"
6. 2) "lisi"
7. 3) "zhangsan"
8. redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
9. (integer) 0
10. redis 127.0.0.1:6379> smembers stu
11. 1) "wangwu"
12. 2) "lisi"
13. 3) "zhangsan"
14. redis 127.0.0.1:6379> sadd tech wangwu liming joe
15. (integer) 3
16. redis 127.0.0.1:6379> sadd tech jim
17. (integer) 1
18. redis 127.0.0.1:6379> smembers tech
19. 1) "jim"
20. 2) "liming"
21. 3) "wangwu"
22. 4) "joe"
2、查询
a)smembers
语法:smembers key
解释:获取set中的所有member
1. redis 127.0.0.1:6379> smembers stu
2. 1) "wangwu"
3. 2) "lisi"
4. 3) "zhangsan"
5. redis 127.0.0.1:6379> smembers tech
6. 1) "jim"
7. 2) "liming"
8. 3) "wangwu"
9. 4) "joe"
b)sismember
语法:sismember key member
解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0
1. redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
2. (integer) 1
3. redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
4. (integer) 0
c)scard
语法:scard key
解释:返回set的member个数,如果set不存在,返回0
[plain] view plain copy
1. redis 127.0.0.1:6379> scard tech # tech 存在
2. (integer) 4
3. redis 127.0.0.1:6379> scard stud #stud 不存在
4. (integer) 0
5. redis 127.0.0.1:6379> scard stu
6. (integer) 4
d)srandmember
语法:srandmember key
解释:从set中返回一个随机member
[plain] view plain copy
1. redis 127.0.0.1:6379> srandmember stu
2. "zhangsan"
3. redis 127.0.0.1:6379> srandmember stu
4. "zhangsan"
5. redis 127.0.0.1:6379> srandmember stu
6. "wangwu"
7. redis 127.0.0.1:6379> srandmember stu
8. "zhangsan01"
3、删除
a)spop
语法:spop key
解释:移除并返回一个随机member
[plain] view plain copy
1. redis 127.0.0.1:6379> smembers stu #pop前
2. 1) "zhangsan01"
3. 2) "wangwu"
4. 3) "lisi"
5. 4) "zhangsan"
6. redis 127.0.0.1:6379> spop stu #移除一个随机member
7. "lisi"
8. redis 127.0.0.1:6379> smembers stu #pop后
9. 1) "zhangsan01"<span style="white-space:pre;"> </span>
10. 2) "wangwu"
11. 3) "zhangsan"
b)srem
语法:srem key member [member ...]
解释:移除一个或多个member
[plain] view plain copy
1. redis 127.0.0.1:6379> smembers tech
2. 1) "jim"
3. 2) "liming"
4. 3) "wangwu"
5. 4) "joe"
6. redis 127.0.0.1:6379> srem tech jim #移除jim
7. (integer) 1
8. redis 127.0.0.1:6379> smembers tech
9. 1) "liming"
10. 2) "wangwu"
11. 3) "joe"
12. redis 127.0.0.1:6379> srem tech liming joe #移除多个member
13. (integer) 2
14. redis 127.0.0.1:6379> smembers tech
15. 1) "wangwu"
c)smove
语法:smove source destination member
解释:将source中的member移动到destination
[plain] view plain copy
1. redis 127.0.0.1:6379> smembers tech #smove前
2. 1) "wangwu"
3. redis 127.0.0.1:6379> smembers stu
4. 1) "zhangsan01"
5. 2) "wangwu"
6. 3) "zhangsan"
7. redis 127.0.0.1:6379> smove stu tech zhangsan #将zhangsan 从stu移动到tech
8. (integer) 1
9. redis 127.0.0.1:6379> smembers stu #smove后
10. 1) "zhangsan01"
11. 2) "wangwu"
12. redis 127.0.0.1:6379> smembers tech
13. 1) "wangwu"
14. 2) "zhangsan"
4、其他
a)并集
语法:sunion key[key...]
解释:多个set的并集
[plain] view plain copy
1. redis 127.0.0.1:6379> smembers stu
2. 1) "zhangsan01"
3. 2) "wangwu"
4. redis 127.0.0.1:6379> sunion stu
5. 1) "zhangsan01"
6. 2) "wangwu"
7. redis 127.0.0.1:6379> smembers tech
8. 1) "wangwu"
9. 2) "zhangsan"
10. redis 127.0.0.1:6379> sunion stu tech
11. 1) "zhangsan01"
12. 2) "wangwu"
13. 3) "zhangsan"
b)把并集结果存储到set
语法:sunionstore destination key [key ...]
解释:求多个set并集,并把结果存储到destination
[plain] view plain copy
1. redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech并集结果存储在union
2. (integer) 3
3. redis 127.0.0.1:6379> smembers union
4. 1) "zhangsan01"
5. 2) "wangwu"
6. 3) "zhangsan"
c)交集
语法:sinter key[key...]
解释:多个set的交集
[plain] view plain copy
1. redis 127.0.0.1:6379> smembers stu
2. 1) "zhangsan01"
3. 2) "wangwu"
4. redis 127.0.0.1:6379> smembers tech
5. 1) "wangwu"
6. 2) "zhangsan"
7. redis 127.0.0.1:6379> sinter stu tech
8. 1) "wangwu"
d)把交集结果存储到指定set
语法:sinterstore destination key [key ...]
解释:把多个set的交集结果存储到destination
[plain] view plain copy
1. redis 127.0.0.1:6379> sinterstore inter stu tech
2. (integer) 1
3. redis 127.0.0.1:6379> smembers inter
4. 1) "wangwu"
e) set中在其他set中不存在member
语法:sdiff key[key ...]
[plain] view plain copy
1. redis 127.0.0.1:6379>
2. redis 127.0.0.1:6379> smembers stu
3. 1) "zhangsan01"
4. 2) "wangwu"
5. redis 127.0.0.1:6379> smembers tech
6. 1) "wangwu"
7. 2) "zhangsan"
8. redis 127.0.0.1:6379> sdiff stu tech
9. 1) "zhangsan01"
10. redis 127.0.0.1:6379> sdiff tech stu
11. 1) "zhangsan"
f)把set中在其他set中不存在的member存储到新的set
语法:sdiffstore key[key...]
[plain] view plain copy
1. redis 127.0.0.1:6379> sdiffstore diff stu tech
2. (integer) 1
3. redis 127.0.0.1:6379> smembers diff
4. 1) "zhangsan01"