首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多台机器的外部查询结果更新Redis

使用多台机器的外部查询结果更新Redis
EN

Stack Overflow用户
提问于 2013-10-26 16:45:03
回答 1查看 288关注 0票数 0

我有一个设置,其中有两个web服务器,一个中央redis服务器和一个SQL服务器。

我需要使用redis作为针对SQL服务器的查询的缓存。

因此,web服务器将首先检查redis缓存,然后再转到SQL server并缓存结果。

但是,两个web服务器不知道另一个服务器是否存在,因此它们无法替换“更新”缓存的结果。

我想避免这种情况:

时间表:

  • WebServer1 :检查redis是否有密钥,但没有找到结果。
  • WebServer1 :查询SQL服务器以获得Result1。
  • WebServer2 :将新数据保存到SQL server,这将更改查询结果。
  • WebServer2 :使Redis密钥无效。
  • WebServer2 :查询SQL服务器以获得Result2。
  • WebServer2 :将Result2放在Redis键中。
  • WebServer1 :将Result1放在Redis键中。

上面的问题是"Result2“被"Result1”覆盖的最新结果。

在Redis里有避免这种情况的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-28 19:41:14

是。使用锁来阻止任何其他查询,直到您完成从某个服务器查询/更新redis为止。对此设置一个非常低的超时时间,这样就不会阻塞太久。

如果您在Redis 2.6.12+上,您可以使用用Lua设置锁定模式进行此操作。如果您使用的是早期版本,则可以使用SETNX锁定模式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19609212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档