Redis哈希或密钥替换

时间:2017-01-17 17:19:14

标签: ruby ruby-on-rails-4 hash redis

如果我在redis中存储了一个对象哈希,请说这个哈希:

 { a: 1, b: 2, c: 3, d: 4, e: 5 }

如果我知道我的哈希值d已更改为10,我是否可以仅更新该redis哈希键值,而不是获取哈希值,修改它并将其写回redis的?

我有一个对象状态,我在redis中缓存,基本上一旦状态发生变化,我正在寻找有效的方法来刷新缓存。

有更好的方法吗?

您好我已尝试过

a = { a: 1, b: 2, c: 3, d: 4, e: 5 }
REDIS.mapped_hmset('key', a)

这样可行:

b = REDIS.hgetall('key')
b['d'] = 10
REDIS.mapped_hmset('key', b)

但我正在寻找一些可能的东西来修改redis中的密钥或替代方法。

1 个答案:

答案 0 :(得分:1)

如果您希望更改(或添加)散列中的单个值,可以使用HSET命令。这不是从redis“获取”哈希值(将其返回给你),它只修改它。

在您的情况下,命令将是HSET YourHashName d 10

HSET Documentation on redis.io

如果您发现一次更改多个值,请使用HMSET。此命令比多个HSET调用更有效地执行相同的操作,因为它在网络上不那么繁琐。

HMSET Documentation on redis.io

请记住,在散列中添加或更改数据时,您不需要首先读取/获取散列(或任何单个散列键值)。此外,如果在设置其数据时哈希不存在,则将创建哈希而不是返回错误。