Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在redis中更新相关键值?_Redis_Lua - Fatal编程技术网

如何在redis中更新相关键值?

如何在redis中更新相关键值?,redis,lua,Redis,Lua,我想知道,如果一个或多个键的值发生变化,是否有一种基于其他键的值更新这些键的推荐机制 这有点像属性,或者getter和setter,但是对于redis键 我为什么需要这个? 假设我有多个(在我的例子中是10-100个)客户端,它们都需要知道一个值dep1,这是indep1的(纯)函数索引PN。一种方法是让所有客户端监视indep1indepN,并计算dep1的值。在我看来,这似乎是重复工作,增加了网络流量。但是,如果dep1被“自动”更新,则它们只需侦听对dep1的更改 当前思维 我能想到的唯一

我想知道,如果一个或多个键的值发生变化,是否有一种基于其他键的值更新这些键的推荐机制

这有点像属性,或者getter和setter,但是对于redis键

我为什么需要这个?

假设我有多个(在我的例子中是10-100个)客户端,它们都需要知道一个值
dep1
,这是
indep1
的(纯)函数<代码>索引PN。一种方法是让所有客户端监视
indep1
indepN
,并计算
dep1
的值。在我看来,这似乎是重复工作,增加了网络流量。但是,如果
dep1
被“自动”更新,则它们只需侦听对
dep1
的更改

当前思维


我能想到的唯一解决方案是有一个监控客户机来完成这项工作。然而,我想知道是否有更好的方法。也许是和Lua。顺便说一下,我是一个完全的Redis和Lua noob。

使用Lua似乎是个不错的主意。您可以使用Lua脚本更新任何
indep1
indepN
,脚本可以在单个事务中自动计算
dep1
,并在数据库中设置其值(Lua脚本在处理任何其他命令之前运行到完成)。读取
dep1
保证是正确的,因为它是与任何
indepX
一起进行原子更新的。然后,您只需要在客户机中的
dep1
上观察键空间的更改

注意:这可能不是最有效的方法,因为用于确定
dep1
的计算可能非常昂贵,并且在
indepX
中的任何一个更新时都会重复