如果我在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中的键,或者替代方法。
发布于 2017-01-17 17:37:03
如果希望在散列中更改(或添加)单个值,则可以使用HSET命令。这并不是从redis中“获取”散列(将其返回给您),它只修改它。
在您的例子中,命令将是HSET YourHashName d 10。
如果您发现正在同时更改多个值,请使用HMSET。这个命令比多个HSET调用执行相同的任务更有效,因为它在网络上的聊天性较低。
请记住,在哈希中添加或更改数据时,不需要首先读取/获取散列(或任何单独的散列键值)。另外,如果在设置数据时哈希不存在,则将创建哈希,而不是返回错误。
https://stackoverflow.com/questions/41703239
复制相似问题