我想知道,如果一个或多个键的值发生变化,是否有一个基于其他键的值更新这些键的推荐机制。
这有点像属性,或者getter和setter,但是对于redis键。
为什么我需要这个?
假设我有多个(在我的例子中是10-100个)客户都需要知道一个值 dep1
它是 indep1
, ... , indepN
. 一种方法是让所有的客户机监视 indep1
, ... , indepN
,并计算 dep1
. 在我看来,这似乎是重复工作,并增加网络流量。但是,如果 dep1
是“自动”更新的,它们都只需要监听 dep1
.
当前思维
我能想到的唯一解决方案是有一个监控客户机来完成这项工作。不过,我想知道有没有更好的办法。也许是和卢亚。顺便说一句,我是一个十足的redis和lua noob。
1条答案
按热度按时间pw9qyyiw1#
使用lua似乎是个不错的主意。您可以使用lua脚本来更新
indep1
...indepN
脚本可以自动计算dep1
并在数据库中的单个事务中设置其值(lua脚本在处理任何其他命令之前运行到完成)。阅读dep1
然后保证是正确的,因为它是原子式更新的indepX
. 然后,您只需要观察上的键空间更改dep1
在你的客户身上。注:这可能不是最有效的方法,因为计算
dep1
可能是昂贵的和复制的任何时间之一indepX
已更新。