备注:测试版本 redis 4.0.9
文章目录
- 哈希(Hash)类型命令
- 1.1 Hdel 命令
- 1.2 Hexists 命令
- 1.3 Hget 命令
- 1.4 Hgetall 命令
- 1.5 Hincrby 命令
- 1.6 Hincrbyfloat 命令
- 1.7 Hkeys 命令
- 1.8 Hlen 命令
- 1.9 Hmget 命令
- 1.10 Hmset 命令
- 1.11 Hset 命令
- 1.12 Hsetnx 命令
- 1.13 Hvals 命令
- 参考
哈希(Hash)类型命令
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。
命令 | 概述 |
HDEL key field2 [field2] | 删除一个或多个哈希表字段 |
HEXISTS key field | 查看哈希表 key 中,指定的字段是否存在 |
HGET key field | 获取存储在哈希表中指定字段的值 |
HGETALL key | 获取在哈希表中指定 key 的所有字段和值 |
HINCRBY key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment |
HINCRBYFLOAT key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
HKEYS key | 获取所有哈希表中的字段 |
HLEN key | 获取哈希表中字段的数量 |
HMGET key field1 [field2] | 获取所有给定字段的值 |
HMSET key field1 value1 [field2 value2 ] | 同时将多个 field-value (域-值)对设置到哈希表 key 中。 |
HSET key field value | 将哈希表 key 中的字段 field 的值设为 value |
HSETNX key field value | 只有在字段 field 不存在时,设置哈希表字段的值 |
HVALS key | 获取哈希表中所有值 |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对 |
1.1 Hdel 命令
语法:
HDEL key field2 [field2] 删除一个或多个哈希表字段
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> HDEL user:1 sex
(integer) 1
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
127.0.0.1:6379>
1.2 Hexists 命令
语法:
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379>
127.0.0.1:6379> hexists user:1 username
(integer) 1
127.0.0.1:6379> hexists user:1 user_name
(integer) 0
127.0.0.1:6379>
1.3 Hget 命令
语法:
HGET key field 获取存储在哈希表中指定字段的值/td>
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hget user:1 username
"mysql"
1.4 Hgetall 命令
语法:
HGETALL key 获取在哈希表中指定 key 的所有字段和值
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
1.5 Hincrby 命令
语法:
HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> Hincrby user:1 age 1
(integer) 31
127.0.0.1:6379> Hincrby user:1 age -1
(integer) 30
1.6 Hincrbyfloat 命令
语法:
HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hincrbyfloat user:1 age 0.1
"30.1"
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30.1"
7) "sex"
8) "boy"
1.7 Hkeys 命令
语法:
HKEYS key 获取所有哈希表中的字段
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hkeys user:1
1) "username"
2) "password"
3) "age"
4) "sex"
127.0.0.1:6379>
1.8 Hlen 命令
语法:
HLEN key 获取哈希表中字段的数量
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hlen user:1
(integer) 4
127.0.0.1:6379>
1.9 Hmget 命令
语法:
HMGET key field1 [field2] 获取所有给定字段的值
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hmget user:1 username password sex
1) "mysql"
2) "www.mysql.com"
3) "boy"
127.0.0.1:6379>
1.10 Hmset 命令
语法:
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
1.11 Hset 命令
语法:
HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。
测试记录
127.0.0.1:6379> hset user:2 username oracle
(integer) 1
127.0.0.1:6379> hget user:2 username
"oracle"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> hset user:2 password www.oracle.com
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
127.0.0.1:6379>
1.12 Hsetnx 命令
语法:
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。
测试记录
127.0.0.1:6379> hsetnx user:2 age 30
(integer) 1
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
5) "age"
6) "30"
127.0.0.1:6379> hsetnx user:2 age 10
(integer) 0
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
5) "age"
6) "30"
1.13 Hvals 命令
语法:
HVALS key 获取哈希表中所有值
测试记录
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "sex"
6) "boy"
7) "age"
8) "30"
127.0.0.1:6379>
127.0.0.1:6379> hvals user:1
1) "mysql"
2) "www.mysql.com"
3) "boy"
4) "30"
127.0.0.1:6379>
参考
1.https://www.redis.net.cn/tutorial/3505.html