当Redis处于前哨模式时,复制之前是否有可能发生读取?

时间:2019-11-28 13:56:25

标签: redis redis-sentinel redisson

我在哨兵模式下运行Redis,发生过很多次我在Redis中写入数据,但是在读取相同的键时却没有得到期望的值。

我想知道是否有可能在写数据时将其写在Master上,而在读数据时将其传递给Slave,但是由于Redis中的Replication本质上是异步的,因此不会更新所有Slave,因此我没有获取更新值/有效值。

我正在使用redisson客户端和三台服务器进行哨兵配置。

1 个答案:

答案 0 :(得分:1)

不可能。为了克服这个问题,您可以选择以下选项:

  1. (async () => { // Create a cluster with 2 workers const cluster = await Cluster.launch({ puppeteerOptions: { headless: false, }, concurrency: Cluster.CONCURRENCY_CONTEXT, maxConcurrency: 2, }); // Define a task (in this case: screenshot of page) await cluster.task(async ({ page, data: url }) => { await page.goto(url); const path = url.replace(/[^a-zA-Z]/g, '_') + '.png'; await page.screenshot({ path }); console.log(`Screenshot of ${url} saved: ${path}`); }); // Add some pages to queue cluster.queue('https://www.google.com'); cluster.queue('https://www.wikipedia.org'); cluster.queue('https://github.com/'); // Shutdown after everything is done await cluster.idle(); await cluster.close(); })();` 的配置参数设置为readMode
  2. 在定义的syncSlaves设置为MASTER的情况下使用RBatch对象