我有一个设置,其中包含2个Web服务器和一个中央redis服务器和一个SQL服务器。
我需要使用redis作为针对SQL服务器进行查询的缓存。
因此,在转到SQL服务器并缓存该结果之前,Web服务器将首先检查redis缓存。
然而,2个Web服务器不知道另一个存在,因此它们无法替换“较新的”缓存结果。
我想避免这种情况:
时间表:
上述问题是最新结果“Result2”被“Result1”覆盖。
在Redis中有没有避免这种情况?
答案 0 :(得分:0)
是。使用锁定来阻止任何其他查询,直到您从某个服务器查询/更新redis。设置一个非常低的超时,所以你不会阻塞太长时间。
如果您使用的是Redis 2.6.12+,则可以使用SET locking pattern with Lua。 如果您使用的是早期版本,则可以使用SETNX locking pattern。