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 的新哈希,然后我们创建了一个名为 的键keyOne
,valueOne
以及一个名为 的keyTwo
键valueTwo
。您可以永远继续这种模式,这意味着您的哈希可以拥有任意数量的键值对。
在 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