我有一个设置,其中有两个web服务器,一个中央redis服务器和一个SQL服务器。
我需要使用redis作为针对SQL服务器的查询的缓存。
因此,web服务器将首先检查redis缓存,然后再转到SQL server并缓存结果。
但是,两个web服务器不知道另一个服务器是否存在,因此它们无法替换“更新”缓存的结果。
我想避免这种情况:
时间表:
上面的问题是"Result2“被"Result1”覆盖的最新结果。
在Redis里有避免这种情况的方法吗?
发布于 2013-10-28 19:41:14
是。使用锁来阻止任何其他查询,直到您完成从某个服务器查询/更新redis为止。对此设置一个非常低的超时时间,这样就不会阻塞太久。
如果您在Redis 2.6.12+上,您可以使用用Lua设置锁定模式进行此操作。如果您使用的是早期版本,则可以使用SETNX锁定模式。
https://stackoverflow.com/questions/19609212
复制相似问题