1. Set type
Set and List are similar in that they can store multiple strings. Strings in Set cannot have the same elements and are unordered
command SADD to add one or more members to a collection
127.0.0.1:6379> sadd se_test member1 member2
(integer) 2
127.0.0.1:6379> smembers se_test
1) "member1"
2) "member2"
Command SMEMBERS to get all members in the set
Command SCARD to get the number of members in the set
127.0.0.1:6379> scard se_test
(integer) 2
Command SDIFF , get the difference between the first set given and all the following sets (only the value of set a, the value of the latter set does not have)
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"
Command SDIFFSTORE , get the difference between the first set given and all the following sets (only the value of set a, and the value that the latter set does not have), and put the difference into another set
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"
Command SINTER , get the intersection of the given sets
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"
Command SINTERSTORE , get the intersection of a given set and put the intersection into another set
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"
Command SISMEMBER , judge whether the given value is in the set
127.0.0.1:6379> sismember se_test1 1
(integer) 1
127.0.0.1:6379> sismember se_test1 3
(integer) 0
Command SMOVE to move values from one set to another
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"
Command SPOP , pop a few members randomly
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"
Command SRANDMEMBER , get several members randomly
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"
Command SREM to remove several members from a set
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"
Command SUNION , merge collections
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"
Command SUNIONSTORE , merge sets and add to another set
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"
Command SSCAN , an iterator of collection elements
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"
2. Hash type
Redis hashes can store mappings between multiple key-value pairs. The value can be a string or a number, and the number can also be incremented and decremented.
Command HSET , set a value to a field of a hash
127.0.0.1:6379> hset h_test name zhangsan
(integer) 1
127.0.0.1:6379> hget h_test name
"zhangsan"
Command HDEL , delete one or more fields in the hash
127.0.0.1:6379> hdel h_test name
(integer) 1
127.0.0.1:6379> hget h_test name
(nil)
Command HEXISTS to determine whether there is a certain field in a hash
127.0.0.1:6379> hexists h_test name
(integer) 0
Command HMSET, set multiple values for a hash
127.0.0.1:6379> hmset h_test name zhangsan age 18 sex 1
OK
Command HMGET to get multiple field values in a hash,
127.0.0.1:6379> hmget h_test name age sex
1) "zhangsan"
2) "18"
3) "1"
Command HGETALL to get all fields and values in a hash
127.0.0.1:6379> hgetall h_test
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "sex"
6) "1"
Command HINCRBY, the value of a field in the hash is auto-incremented
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"
Command HINCRBYFLOAT, a field in the hash increases the floating point value
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"
The command HKEYS returns all fields in the hash
127.0.0.1:6379> hkeys h_test
1) "name"
2) "age"
3) "sex"
4) "score"
The command HLEN returns several fields in the hash
127.0.0.1:6379> hlen h_test
(integer) 4
Command HSETNX, if this field does not exist in the hash, set a value for this field
127.0.0.1:6379> hsetnx h_test age 22
(integer) 0
127.0.0.1:6379> hsetnx h_test address china
(integer) 1
Command HSTRLEN to get the length of a field value in the hash
127.0.0.1:6379> hstrlen h_test address
(integer) 5
Command HVALS to get all the values in the hash
127.0.0.1:6379> hvals h_test
1) "zhangsan"
2) "21"
3) "1"
4) "73"
5) "china"
Command HSCAN, cursor iterator of hash type
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"
3. ZSET type
The keys of the sorted set are called members, and each member is different. The values of the sorted set are called the score, and the score must be a floating-point number. An ordered set is the only structure in redis that can access elements not only according to members, but also according to the score and the order of the score.
Command ZADD, add one or more members to zset, or update the score if it exists
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
Command ZCARD to get the number of members of the sorted set
127.0.0.1:6379> zcard z_test
(integer) 6
Command ZCOUNT to get the number of ordered sets in a certain score segment
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
Command ZINCRBY, how much to increase the score of an element in the set
127.0.0.1:6379> zincrby z_test 2 m5
"8"
Command ZINTERSTORE, take the intersection of multiple ordered sets and save them to a new set
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
Command ZLEXCOUNT to get the number of members in an interval of the set
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
Command ZRANGEBYLEX, get members of a certain interval of the set, in positive order
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"
Command ZRANGEBYLEX, get the members of a certain interval of the set, and arrange them in reverse order
Command ZRANGEBYSCORE to get the members of the score interval according to the 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"
Command ZRANK to get the rank of a member
127.0.0.1:6379> zrank myzset c
(integer) 2
127.0.0.1:6379> zrank myzset e
(integer) 4
Command ZREM, remove one or more members
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"
Command ZREMRANGEBYLEX to remove members from an interval
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"
Command ZREMRANGEBYRANK to remove members from ranking segments
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"
Command ZREMRANGEBYSCORE to remove members from fractional segments
127.0.0.1:6379> zremrangebyscore myzset 0 1
(integer) 2
127.0.0.1:6379> zrange myzset 0 -1
(empty list or set)
Command ZREVRANGE, reverse sort
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"
Command ZREVRANGEBYSCORE, reverse sorting according to fractional segments
127.0.0.1:6379> zrevrangebyscore myzset 3 1
1) "f"
2) "b"
3) "e"
Command ZREVRANK, reverse sorting according to rank
127.0.0.1:6379> zrevrank myzset b
(integer) 1
127.0.0.1:6379> zrevrank myzset f
(integer) 0
Command ZSCORE, get points based on given members
127.0.0.1:6379> zscore myzset f
"3"
Command ZUNIONSTORE, take the union and put the union into a sorted set