本文讲解redis中的Hash命令的基础操作。
HSET key field value:
HSET user:1 name Alice设置名称为 user:1 的哈希键中,名为 name 的字段对应的值为 Alice。
HGET key field:
HGET user:1 name返回名称为 user:1 的哈希键中,名为 name 的字段所对应的值:Alice。
HMSET key field1 value1 [field2 value2 ...]:
HMSET user:1 name Alice gender Female age 26同时设置用户 user:1 的名字、性别和年龄。
HMGET key field1 [field2 ...]:
HMGET user:1 name age返回名称为 user:1 的哈希键中名为 name 和 age 的两个字段所对应的值:[Alice, 26]。
HGETALL key:
HGETALL user:1返回名称为 user:1 的哈希键中所有字段和值,格式为 “field1 value1 field2 value2…”:name Alice gender Female age 26。
HEXISTS key field:
HEXISTS user:1 gender判断名称为 user:1 的哈希键中是否存在名为 gender 的字段,若存在,则返回 1,否则返回 0。
HDEL key field1 [field2 ...]:
HDEL user:1 age删除名称为 user:1 的哈希键中名为 age 的字段。
HINCRBY key field increment:
HSET user:1 score 10
HINCRBY user:1 score 5将名称为 user:1 的哈希键中名为 score 的字段增加 5,返回增加后的值:15。
HKEYS key:
HKEYS user:1返回名称为 user:1 的哈希键中所有字段名,格式为 “[field1, field2, …]”:[name, gender, score]。
HLEN key:
HLEN user:1返回名称为 user:1 的哈希键中所有字段的数量:3。
HSETNX key field value:
HSETNX user:1 name Alice
HSETNX user:1 email alice@example.com若名称为 user:1 的哈希键中已经存在名为 name 的字段,则不设置 email 字段,否则将 email 字段对应的值设为 alice@example.com。
HSTRLEN key field:
HSTRLEN user:1 name返回名称为 user:1 的哈希键中名为 name 字段所对应的字符串长度。
HVALS key:
HVALS user:1返回名称为 user:1 的哈希键中所有字段对应的值,格式为 “[value1, value2, …]”:[Alice, Female, 15]。
HSCAN key cursor [MATCH pattern] [COUNT count]:
HSCAN user:1 0 MATCH *o* COUNT 2迭代名称为 user:1 的哈希键中以 o 结尾的字段,每次返回 2 个匹配项。
哈希键主要用于存储一些具有结构化的数据,比如用户(User)对象、文章(Post)对象、电影(Movie)对象等。下面以用户对象为例,介绍哈希键的一个具体应用场景。
假设某个社交网站上有很多用户,每个用户有以下信息:
把这些信息存储在 Redis 中,可以将用户对象表示成一个哈希键。例如,对于 ID 为 1 的用户,可以把他的信息以如下方式存储在 Redis 中:
HSET user:1 username Alice password 123456 email alice@example.com phone 13888888888 gender Female age 26这样,就创建了一个名为 user:1 的哈希键,并设置了它的所有字段值。如果想要获取 ID 为 1 的用户的用户名,可以使用 HGET 命令:
HGET user:1 username返回值为 "Alice"。
如果想要获取所有用户的信息,可以使用 HGETALL 命令:
HGETALL user:1返回值为 "username Alice password 123456 email alice@example.com phone 13888888888 gender Female age 26"。
这样,Redis 可以非常快速地存储和检索用户对象的信息,而且还提供了对对象属性进行增量修改的功能,如 HINCRBY 命令用于将用户键中存储的分数值增加一定数量,以及支持更高级操作,如使用 Lua 脚本批量修改哈希键。在实际应用场景中,哈希键可以被广泛地用于各种数据结构的存储和检索。