redis - 有没有办法将散列键的值设置为Redis中某个键的值

标签 redis hashmap

假设我有一把 key PREMIUM_PRICE,

设置 PREMIUM_PRICE "1000"

现在,我希望 PRODUCT_A 的价格与 PREMIUM_PRICE 相同。我不想说,

  • HSET PRODUCT_A PRICE "1000"(因为如果 PREMIUM_PRICE 值发生变化,我希望 PRODUCT_A 的价格自动更新)

  • HSET PRODUCT_A PRICE "PREMIUM_PRICE",这样我就必须得到 PRODUCT_A 的价格值,它本身是 redis 中的一个键,包含实际价格作为它的值。(因为我不想进行第二次查询来获取PREMIUM_KEY 的值(value))

我可以这样说吗

HSET PRODUCT_A PRICE [value(PREMIUM_PRICE)]

,其中 [value(PREMIUM_PRICE)] 是指向 PREMIUM_PRICE key 或其他内容的链接

这样当我执行 HGET PRODUCT_A PRICE 时,redis 会自动返回 PREMIUM_PRICE 的最新值。

这可能吗?谁告诉我。

最佳答案

一般来说是的,你可以。但是您应该为此使用 LUA 脚本,因为 Redis 没有内置功能。<​​/p>

所以你的函数看起来像

local hsetValue = redis.call("hget", ARGV[1], ARGV[2]);
if hsetValue then
   return redis.call("get", hsetValue);
end

return nil;

因此您可以使用该 LUA 函数根据其他键的值获取 HSET 字段值。

关于redis - 有没有办法将散列键的值设置为Redis中某个键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029283/

相关文章:

java - 与 HashMap<Long, String> 数据相比,为什么 data.entrySet().iterator() 的排序顺序不同?

c - 使用gcc时 "-h"选项的含义是什么?

asp.net-core - 将 SignalR hub 与 Redis 结合使用时如何跨负载均衡器服务器跨越 ConcurrentDictionary

database - rediSearch 无法在 db != 0 上创建索引?

laravel - laravel事件在真实聊天应用中生成错误

java - 使用常量迭代两个类并将它们的字段加载到 HashMap 中

java - 基于数组列表 d 对数组列表 a、b、c 进行排序

java.util.hashmap 无法转换为 java.util.list

java - 使用 HashMap 确定一个字符串是否是另一个字符串的排列(最佳解决方案)

javascript - 使用 Node js从redis服务器按模式选择所有值