1. Hash 介绍
Redis 哈希类型是键值对的集合,字段与值均支持字符串、数字等类型,适合建模用户信息、配置项等对象类数据。其支持单字段/多字段的增删改查、字段存在性判断、值自增自减等原子操作,且底层通过压缩列表或哈希表优化存储,空间利用率高、查询效率快,是 Redis 中存储结构化数据的核心类型之一。
在 Redis 中因为本身就是按照哈希的 KV 结构来进行存储的,所以当我们想要使用 Redis 里面的哈希的时候,实际上是哈希的哈希,在后者中,则用 field 来代替原本的 Key 位置,防止和前面的哈希名字相同。
2. hset
该指令用于在 Redis 中创建一个哈希的键值对。
语法:
hset key field value
一个 key 可以有很多个 field,一个 field 和一个 value 一一对应。

当对一个 field 重新使用 hset 时,会对它里面的 value 进行更新。同时一个 key 也可以对应多个 field。

3. hget
该指令通过 key 和 field 来获取对应的 value。
语法:
hget key field
hget 相当于通过两个关键字找到对应的 value。它不支持一次访问多个 value,后续会有特定指令获取多个 value。

4. hdel
该指令用于删除 value 和 field。
语法:
hdel key field
hdel 删除的是 field 和它对应的 value,不会把 key 给删除(在 key 还有其他对应 field 的时候)。因此删除后访问其他 field 依然成功。

5. hkeys
该指令用于查找这个 key 里面所有的 field,返回值也是该 key 对应的全部 field。
语法:
hkeys key
通过 hkeys 可以查找指定 key 内使用的 field。

注意:hkeys * 返回空数组是因为 Redis 里 * 不是通配符用法,hkeys 只能跟具体的键名,不能直接用通配符匹配多个哈希键。

6. hvals
该指令返回这个 key 里面所有的 value。
语法:
hvals key
通过 hvals 可以拿到 key 里面所有的 value。

7. hgetall
该指令可以直接获得这个 key 所对应的所有 field 和 value。
语法:
hgetall key
通过这种方式可以直接得到 key 里面使用的 field 和 value。

**注意:**无论是 hvals、hkeys 还是 hgetall,它们在很多情况下不被推荐使用。因为我们并不知道这个 key 里面到底有多少个哈希键值对,由于 Redis 是单线程数据库,如果数量很多会让 Redis 卡住。
8. hexists
该指令用来判断某一个 field 是否存在,或者说是判断通过两个关键字是否可以找到值。
语法:
hexists key field
如果该 field 存在的话就返回 1,不存在就返回 0。

9. hmget
该指令可以一次获取多个 value 的值。
语法:
hmget key field...
输入对应的 key 和 field,就可以批量得到对应的 value。

10. hlen
该指令返回这个 key 所对应的 field 的个数,如果这个 key 不存在的话则返回 0。
语法:
hlen key
调用 hlen 时会返回 field 的数量;若 key 不存在,则返回 0。

11. hsetnx
该指令是在字段不存在的情况下,设置 hash 中的字段和值。
语法:
hsetnx key field value
在 field 不存在时用 hsetnx 可以成功,而有了之后再用 hsetnx 来插入会失败。

12. hincrby
该指令给 field 对应的那个 value 的值进行增加或者减少操作。
语法:
hincrby key field 要加或减的值
该指令既可以加数字也可以减数字,只要在原本的数字前面加一个负号即可。

13. hincrbyfloat
该指令可以给浮点数进行浮点数的加减。
注意:该指令不仅支持浮点数,也支持整数,同时它的值也可以为整数。
语法:
hincrbyfloat key field 要加或减的值
hincrbyfloat 既可以给整数加浮点数,也可以给浮点数加整数。



