参考目录
- 1 散列
- 2 HSET / hset
- 3 HGET / hget
- 4 HMSET / hmset
- 5 HMGET / hmget
- 6 HDEL / hdel
- 7 HSETNX / hsetnx
- 8 HVALS / hvals
- 9 HKEYS / hkeys
- 10 HGETALL / hgetall
- 11 HEXISTS / hexists
- 12 HINCRBY / hincrby
- 13 HINCRBYFLOAT / hincrbyfloat
- 14 HLEN / hlen
- 15 HSTRLEN / hstrlen
- 16 有序集合
- 17 ZADD / zadd
- 18 ZSCORE / zscore
- 19 ZRANGE / zrange
- 20 ZREVRANGE / zrevrange
- 21 ZCARD / zcard
- 22 ZCOUNT / zcount
- 23 ZRANGEBYSCORE / zrangebyscore
- 24 ZRANK / zrank
- 25 ZREVRANK / zrevrank
- 26 ZINCRBY / zincrby
- 27 ZINTERSTORE / zinterstore
- 28 ZREM / zrem
- 29 ZLEXCOUNT / zlexcount
- 30 ZRANGEBYLEX / zrangebylex
阅读完需:约 7 分钟
散列
很多时候,散列就像一个微缩版的 redis ,在本文中,小伙伴们对看到的许多散列命令都会有似曾相识的感觉。
HSET / hset
HSET 命令可以用来设置 key 指定的哈希集中指定字段的值,如下:
1 2 | 127.0.0.1:6379> HSET k1 h1 v1 (integer) 1 |
HGET / hget
HGET 命令可以用来返回 key 指定的哈希集中该字段所关联的值,如下:
1 2 | 127.0.0.1:6379> HGET k1 h1 “v1” |
HMSET / hmset
HMSET 命令可以批量设置 key 指定的哈希集中指定字段的值,如下:
1 2 | 127.0.0.1:6379> HMSET k2 h1 v1 h2 v2 h3 v3 OK |
HMGET / hmget
HMGET 可以批量返回 key 指定的哈希集中指定字段的值,如下:
1 2 3 4 | 127.0.0.1:6379> HMGET k2 h1 h2 h3 1) “v1” 2) “v2” 3) “v3” |
HDEL / hdel
HDEL 命令可以从 key 指定的哈希集中移除指定的域,在哈希集中不存在的域将被忽略,如下:
1 2 3 4 5 6 7 8 9 10 | 127.0.0.1:6379> HMGET k2 h1 h2 h3 1) “v1” 2) “v2” 3) “v3” 127.0.0.1:6379> HDEL k2 h1 (integer) 1 127.0.0.1:6379> HMGET k2 h1 h2 h3 1) (nil) 2) “v2” 3) “v3” |
HSETNX / hsetnx
HSETNX 命令只在 key 指定的哈希集中不存在指定的字段时,设置字段的值,如果字段已存在,该操作无效果。如下:
1 2 3 4 | 127.0.0.1:6379> HSETNX k2 h3 1 (integer) 0 127.0.0.1:6379> HSETNX k2 h4 1 (integer) 1 |
HVALS / hvals
HVALS 命令可以返回 key 指定的哈希集中所有字段的值,如下:
1 2 3 4 | 127.0.0.1:6379> HVALS k2 1) “v2” 2) “v3” 3) “1” |
HKEYS / hkeys
HKEYS 命令可以返回 key 指定的哈希集中所有字段的名字,如下:
1 2 3 4 | 127.0.0.1:6379> HKEYS k2 1) “h2” 2) “h3” 3) “h4” |
HGETALL / hgetall
HGETALL 命令可以返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍,如下:
1 2 3 4 5 6 7 | 127.0.0.1:6379> HGETALL k2 1) “h2” 2) “v2” 3) “h3” 4) “v3” 5) “h4” 6) “1” |
HEXISTS / hexists
HEXISTS 命令可以返回 hash 里面 field 是否存在,如下:
1 2 | 127.0.0.1:6379> HEXISTS k2 h3 (integer) 1 |
HINCRBY / hincrby
HINCRBY 可以增加 key 指定的哈希集中指定字段的数值。如果 key 不存在,会创建一个新的哈希集并与 key 关联。如果字段不存在,则字段的值在该操作执行前被设置为 0, HINCRBY 支持的值的范围限定在 64 位有符号整数,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 127.0.0.1:6379> HEXISTS k2 h3 (integer) 1 127.0.0.1:6379> 127.0.0.1:6379> HGET k2 h4 “1” 127.0.0.1:6379> HINCRBY k2 h4 5 (integer) 6 127.0.0.1:6379> HGET k2 h4 “6” 127.0.0.1:6379> HGET k2 h5 (nil) 127.0.0.1:6379> HINCRBY k2 h5 99 (integer) 99 127.0.0.1:6379> HGET k2 h5 “99” |
HINCRBYFLOAT / hincrbyfloat
HINCRBYFLOAT 与 HINCRBY 用法基本一致,只不过这里允许 float 类型的数据,不赘述。
HLEN / hlen
HLEN 返回 key 指定的哈希集包含的字段的数量,如下:
1 2 | 127.0.0.1:6379> HLEN k2 (integer) 4 |
HSTRLEN / hstrlen
HSTRLEN 可以返回 hash 指定 field 的 value 的字符串长度,如果 hash 或者 field 不存在,返回 0 ,如下:
1 2 | 127.0.0.1:6379> HSTRLEN k2 h2 (integer) 2 |
有序集合
有序集合类似 Sets ,但是每个字符串元素都关联到一个叫 score 浮动数值。里面的元素总是通过 score 进行着排序,因此它是可以检索的一系列元素。
ZADD / zadd
ZADD 命令可以将所有指定成员添加到键为 key 的有序集合里面。添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新该成员的分数(scrore)并更新到正确的排序位置。如下:
1 2 | 127.0.0.1:6379> ZADD k1 60 v1 (integer) 1 |
ZSCORE / zscore
ZSCORE 命令可以返回有序集 key 中,成员 member 的score 值。如下:
1 2 | 127.0.0.1:6379> ZSCORE k1 v1 “60” |
ZRANGE / zrange
ZRANGE 命令可以根据 index 返回 member ,该命令在执行时加上 withscores 参数可以连同 score 一起返回:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 127.0.0.1:6379> ZRANGE k1 0 3 1) “v1” 2) “v2” 3) “v3” 4) “v4” 127.0.0.1:6379> ZRANGE k1 0 3 withscores 1) “v1” 2) “60” 3) “v2” 4) “70” 5) “v3” 6) “80” 7) “v4” 8) “90” |
ZREVRANGE / zrevrange
ZREVRANGE 和 ZRANGE 功能基本一致,不同的是 ZREVRANGE 是反着来的,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 127.0.0.1:6379> ZREVRANGE k1 0 3 1) “v5” 2) “v4” 3) “v3” 4) “v2” 127.0.0.1:6379> ZREVRANGE k1 0 3 withscores 1) “v5” 2) “100” 3) “v4” 4) “90” 5) “v3” 6) “80” 7) “v2” 8) “70” |
ZCARD / zcard
ZCARD 命令可以返回 key 的有序集元素个数。如下:
1 2 | 127.0.0.1:6379> ZCARD k1 (integer) 5 |
ZCOUNT / zcount
ZCOUNT 命令可以返回有序集 key 中,score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员。如下:
1 2 | 127.0.0.1:6379> ZCOUNT k1 60 90 (integer) 4 |
如果在统计时,不需要包含 60 或者 90 ,则添加一个 ( 即可,如下:
1 2 | 127.0.0.1:6379> ZCOUNT k1 60 (90 (integer) 3 |
ZRANGEBYSCORE / zrangebyscore
ZRANGEBYSCORE 命令可以按照 score 范围范围元素,加上 withscores 可以连 score 一起返回。如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 127.0.0.1:6379> ZRANGEBYSCORE k1 60 80 1) “v1” 2) “v2” 3) “v3” 127.0.0.1:6379> ZRANGEBYSCORE k1 60 80 withscores 1) “v1” 2) “60” 3) “v2” 4) “70” 5) “v3” 6) “80” 127.0.0.1:6379> ZRANGEBYSCORE k1 (60 80 withscores 1) “v2” 2) “70” 3) “v3” 4) “80” |
ZRANK / zrank
ZRANK 命令可以返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,即 score 值最小的成员排名为 0 。如下:
1 2 3 4 | 127.0.0.1:6379> ZRANK k1 v1 (integer) 0 127.0.0.1:6379> ZRANK k1 v2 (integer) 1 |
ZREVRANK / zrevrank
ZREVRANK 和 ZRANK 命令功能基本一致,不同的是,ZREVRANK 中的排序是从大到小:
1 2 3 4 | 127.0.0.1:6379> ZREVRANK k1 v1 (integer) 4 127.0.0.1:6379> ZREVRANK k1 v2 (integer) 3 |
ZINCRBY / zincrby
ZINCRBY 命令可以为有序集 key 的成员 member 的 score 值加上增量 increment 。如果 key 中不存在 member ,就在 key 中添加一个 member ,score 是 increment(就好像它之前的 score 是0.0)。如果 key 不存在,就创建一个只含有指定 member 成员的有序集合:
1 2 3 4 5 | 127.0.0.1:6379> ZINCRBY k1 3 v1 “63” 127.0.0.1:6379> ZRANGE k1 0 0 withscores 1) “v1” 2) “63” |
ZINTERSTORE / zinterstore
ZINTERSTORE 命令可以计算给定的 numkeys 个有序集合的交集,并且把结果放到 destination 中。 在给定要计算的 key 和其它参数之前,必须先给定 key 个数( numberkeys )。该命令也可以在执行的过程中给原 score 乘以 weights 后再求和,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 127.0.0.1:6379> ZADD k2 2 v1 (integer) 1 127.0.0.1:6379> ZADD k2 3 v2 (integer) 1 127.0.0.1:6379> ZADD k2 4 v3 (integer) 1 127.0.0.1:6379> ZADD k3 9 v2 (integer) 1 127.0.0.1:6379> ZADD k3 10 v3 (integer) 1 127.0.0.1:6379> ZADD k3 11 v4 (integer) 1 127.0.0.1:6379> ZINTERSTORE k4 2 k2 k3 (integer) 2 127.0.0.1:6379> ZRANGE k4 0 -1 withscores 1) “v2” 2) “12” 3) “v3” 4) “14” 127.0.0.1:6379> ZINTERSTORE k5 2 k2 k3 weights 3 1 (integer) 2 127.0.0.1:6379> ZRANGE k5 0 -1 withscores 1) “v2” 2) “18” 3) “v3” 4) “22” |
ZREM / zrem
ZREM 命令可以从集合中弹出一个元素,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 127.0.0.1:6379> ZRANGE k2 0 -1 withscores 1) “v1” 2) “2” 3) “v2” 4) “3” 5) “v3” 6) “4” 127.0.0.1:6379> ZREM k2 v1 (integer) 1 127.0.0.1:6379> ZRANGE k2 0 -1 withscores 1) “v2” 2) “3” 3) “v3” 4) “4” |
ZLEXCOUNT / zlexcount
ZLEXCOUNT 命令用于计算有序集合中指定成员之间的成员数量。如下:
1 2 3 4 | 127.0.0.1:6379> ZLEXCOUNT k2 – + (integer) 2 127.0.0.1:6379> ZLEXCOUNT k2 [v2 [v4 (integer) 2 |
注意:可以用 – 和 + 表示得分最小值和最大值,如果使用成员名的话,一定要在成员名之前加上 [ 。
ZRANGEBYLEX / zrangebylex
ZRANGEBYLEX 返回指定成员区间内的成员,按成员字典正序排序, 分数必须相同。如下:
1 2 3 4 5 6 7 | 127.0.0.1:6379> ZRANGEBYLEX k2 [v2 [v4 1) “v2” 2) “v3” 127.0.0.1:6379> ZRANGEBYLEX k2 – + 1) “v2” 2) “v3” 127.0.0.1:6379> |
注意 min 和 max 参数的写法和 ZLEXCOUNT 一致。