我有一个设置,其中有 2 个 Web 服务器和一个中央 redis 服务器和一个 SQL 服务器。
我需要使用 redis 作为对 SQL 服务器进行查询的缓存。
因此,Web 服务器将首先检查 redis 缓存,然后再访问 SQL 服务器并缓存该结果。
但是,这两个 Web 服务器不知道另一个存在,因此它们无法替换“较新”的缓存结果。
我想避免这种情况:
时间线:
- WebServer1 :检查redis的key,没有找到结果。
- WebServer1:查询 Result1 的 SQL 服务器。
- WebServer2 :将新数据保存到 SQL 服务器,从而更改查询结果。
- WebServer2 :使 Redis 密钥无效。
- WebServer2:查询 Result2 的 SQL 服务器。
- WebServer2 :将 Result2 放入 Redis Key。
- WebServer1 :将 Result1 放入 Redis Key。
上面的问题是最新结果“Result2”被“Result1”覆盖。
无论如何在Redis中避免这种情况?