redis中Hash命令的基础操作
本文讲解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)对象等。下面以用户对象为例,介绍哈希键的一个具体应用场景。
假设某个社交网站上有很多用户,每个用户有以下信息:
- ID(唯一标识)
- 用户名
- 密码
- 电子邮箱
- 手机号码
- 性别
- 年龄
把这些信息存储在 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 脚本批量修改哈希键。在实际应用场景中,哈希键可以被广泛地用于各种数据结构的存储和检索。