Redis Learning (2) - Data Types (2)

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325383756&siteId=291194637