如何在redis中更新相关键值?
我想知道,如果一个或多个键的值发生变化,是否有一种基于其他键的值更新这些键的推荐机制 这有点像属性,或者getter和setter,但是对于redis键 我为什么需要这个? 假设我有多个(在我的例子中是10-100个)客户端,它们都需要知道一个值如何在redis中更新相关键值?,redis,lua,Redis,Lua,我想知道,如果一个或多个键的值发生变化,是否有一种基于其他键的值更新这些键的推荐机制 这有点像属性,或者getter和setter,但是对于redis键 我为什么需要这个? 假设我有多个(在我的例子中是10-100个)客户端,它们都需要知道一个值dep1,这是indep1的(纯)函数索引PN。一种方法是让所有客户端监视indep1indepN,并计算dep1的值。在我看来,这似乎是重复工作,增加了网络流量。但是,如果dep1被“自动”更新,则它们只需侦听对dep1的更改 当前思维 我能想到的唯一
dep1
,这是indep1
的(纯)函数<代码>索引PN。一种方法是让所有客户端监视indep1
indepN
,并计算dep1
的值。在我看来,这似乎是重复工作,增加了网络流量。但是,如果dep1
被“自动”更新,则它们只需侦听对dep1
的更改
当前思维
我能想到的唯一解决方案是有一个监控客户机来完成这项工作。然而,我想知道是否有更好的方法。也许是和Lua。顺便说一下,我是一个完全的Redis和Lua noob。使用Lua似乎是个不错的主意。您可以使用Lua脚本更新任何
indep1
indepN
,脚本可以在单个事务中自动计算dep1
,并在数据库中设置其值(Lua脚本在处理任何其他命令之前运行到完成)。读取dep1
保证是正确的,因为它是与任何indepX
一起进行原子更新的。然后,您只需要在客户机中的dep1
上观察键空间的更改
注意:这可能不是最有效的方法,因为用于确定dep1
的计算可能非常昂贵,并且在indepX
中的任何一个更新时都会重复