Redis несоответствие данных при чтении / записи двумя приложениями - PullRequest
0 голосов
/ 21 марта 2020

У меня есть две разные. Net Основные службы, и обе они считывают данные из Redis.

Первое приложение записывает данные в формате JSON в ключ Redis.

После этого первое приложение вызывает второе приложение, это делается через RabbitMQ.

Когда второе приложение считывает те же данные, которые были записаны первым, значение выглядит как устаревшее, оно похоже на то же значение, что и до того, как первая прикладная программа обновила ключ.

Поскольку у меня есть некоторая информация, было ли значение правильным или нет, я реализовал код повторной попытки, и значение действительно изменяется после повторных попыток feal .

Я использую библиотеку StackExchange.Redis, и у меня возникает вопрос: после await в методе StringSetAsync действительно ли обновляется значение или оно просто отправляется в очередь или что-то еще, поэтому это может быть обновлено позже?

Эта проблема не случается всегда, и это, кажется, случается только с большими значениями, которые сохранены в ключе.

Sta Версия ckExchange.Redis: 2.0.601 Версия Redis: 5.0.4

1 Ответ

1 голос
/ 21 марта 2020

Я думаю, что проблема в том, что вы используете StringSetAsyn c, и поэтому значение не устанавливается сразу после этой операции, как вы говорите, это происходит с большими значениями, которые могут занять больше времени для записи. Я предлагаю вам попробовать синхронный StringSet вместо StringSetAsyn c

...