Redis Hash的完整指南

Redis Hash是存储在 Redis 数据库中的一种记录。它们有点像 JSON 对象,将数据存储为键值对。它们是可变的,因此可以根据您的需要轻松更改和更新。因此,它们是在 Redis 中存储某些类型数据的好方法。如果您是 Redis 新手,请确保在尝试本教程之前先安装它。

Redis 哈希在结构上是扁平的,所以我们不能像在 JSON 中那样有多个级别。如果我们想添加一个新的哈希,我们使用终端命令HSET。通过在终端中运行来启动 redis redis-cli,然后尝试运行以下命令来设置新密钥:

HSET user:1 keyOne valueOne keyTwo valueTwo

redis 哈希的命名约定是hash:key, 所以这里我们有user:1, 来表示用户号 1。上面的语法可能看起来很混乱,但它遵循这个约定:

HSET hash:key key value key value key value ....

因此,当我们编写 时HSET user:1 keyOne valueOne keyTwo valueTwo,我们创建了一个名为 user:1 的新哈希,然后我们创建了一个名为 的键keyOnevalueOne以及一个名为 的keyTwovalueTwo。您可以永远继续这种模式,这意味着您的哈希可以拥有任意数量的键值对。

在 Redis 哈希中更新和添加新键#

我们可以使用该HSET命令创建一个哈希,也可以更新或添加它。例如,要向 中添加新的键和值user:1,我们只需HSET使用新的键和值再次运行:

HSET user:1 keyThree valueThree

如果我们稍后想要更新keyThree为 的值valueFour,我们将HSET再次运行以覆盖 的值keyThree

HSET user:1 keyThree valueFour

在 Redis 中获取哈希键值和哈希#

如果要获取特定哈希中的所有键和值,请使用HGETALL. 这将返回指定哈希内的所有键和值。例如:

HGETALL user:1

将返回:

1) "keyOne"
2) "valueOne"
3) "keyTwo"
4) "valueTwo"

同时,如果您想获取哈希中某个特定键的值,我们使用HGET. 例如,要获取 的值keyOne,我们运行:

HGET user:1 keyOne

哪个会返回:

"valueOne"

将哈希键值增加一定数量#

哈希的一个常见用例是将用户分数存储在记分板上。在这种情况下,如果它是一个数字,我们希望将用户的分数增加一定数量是很常见的。例如,假设我们有这个记分牌:

HSET scoreboard:1 userNameOne 200

如果我们需要更新用户的分数,我们可以很容易地使用HINCRBY. 假设我们想将用户的分数提高200. 我们可以这样做,而不是使用HSET

HINCRBY scoreboard:1 userNameOne 200

在 Redis 中删除哈希键和值#

最后,如果您想删除特定哈希的哈希键,我们使用HDEL. 以我们的第一个示例为例user:1,如果我们想删除keyOne,我们可以通过运行以下命令来实现:

HDEL user:1 keyOne

如果您根本不想拥有哈希,并且想user:1完全删除,那么您可以简单地使用del

del user:1