备注:测试版本 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