哈希(Hash)数据类型

xiaohai 2021-05-05 21:59:28 2052人围观 标签: Redis 
简介 哈希表示键值之间的一个种映射。Redis中哈希的键值都必须是字符串。

  哈希表示键值之间的一个种映射。Redis中哈希的键值都必须是字符串。

相关命令

HSET、HGET、HMSET、HMGET、HEXISTS、HGETALL、HDEL、HSETNX、HSCAN、HLEN

操作

1、使用HSET命令设置哈希列表单个字段的值

127.0.0.1:6379> HSET hash_1 name "xiaohai"
(integer) 1

2、使用HGET命令获取哈希列表单个字段的值

127.0.0.1:6379> HGET hash_1 name
"xiaohai"

3、使用HMSET命令来批量设置哈希列表中的字段和值

127.0.0.1:6379> HMSET hash_1 age 18 address "chengdu"
OK

4、使用HMGET命令来批量获取哈希列表中的多个字段的值

127.0.0.1:6379> HMGET hash_1 age address
1) "18"
2) "chengdu"

5、使用HEXISTS命令获取一个哈希列表中某个字段是否存在

127.0.0.1:6379> HEXISTS hash_1 name
(integer) 1
127.0.0.1:6379> HEXISTS hash_1 city
(integer) 0

6、使用HGETALL获取哈希表中的所有字段和值(注意:不建议数量巨大的Hash获取所有值使用HGETALL命令

127.0.0.1:6379> HGETALL hash_1
1) "name"
2) "xiaohai"
3) "age"
4) "18"
5) "address"
6) "chengdu"

7、使用HDEL命令从哈希列表中删除字段

127.0.0.1:6379> HDEL hash_1 age address
(integer) 2
127.0.0.1:6379> HGETALL hash_1
1) "name"
2) "xiaohai"

8、使用HSETNX命令设置只有字段不存在的情况下才成功,防止被覆盖

127.0.0.1:6379> HSETNX hash_1 name "zhang"
(integer) 0
127.0.0.1:6379> HSETNX hash_1 age 20
(integer) 1

9、使用HSAN来增量获取所有字段和值
一个哈希最多容纳2^23-1个字段。如果一个哈希中的字段非常的多,那么执行HGETALL命令时,可能会阻塞Redis服务器。在这种情况下就最好使用HSCAN命令来获取。
HSCAN会增量迭代遍历元素,从而不会造成服务器阻塞。HSCAN命令是一种基于指针的迭代器,因此我们需要在每次调用命令时需要指定一个游标,从0开始。当一次HSCAN运行结束后,Redis会返回一个元素列表以及下一个新的游标,这个游标用于下一次迭代。
HSCAN的使用方法:

  • HSCAN key cursor [match pattern] [count number]
  • 选项match可以用来匹配满足指定表达式的字段
  • 选项count用来说明每次迭代中应该返回多少个元素。但是这个只提供参考,默认10
  • 如果返回的游标是0,表示整个遍历结束
127.0.0.1:6379> HSCAN hash_1 0
1) "0"
2) 1) "name"
   2) "xiaohai"
   3) "age"
   4) "20"