Воссознание STACKEXCHANGE REDIS CACHE -CACHE при ошибке в методе SETASYNC?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Воссознание STACKEXCHANGE REDIS CACHE -CACHE при ошибке в методе SETASYNC?

Сообщение Anonymous »

Мы используем кэш Redis для нашего приложения Web-API. Мы используем microsoft.extensions.caching.stackexchangantis . После того, как некоторые работы были сделаны на сервере Redis, наше приложение не удалось записать в кэш: < /p>

Код: Выделить всё

"READONLY You can't write against a read only replica"
< /code>
Если я правильно понимаю, это потому, что соединение кэшируется клиентом Redis (в Microsoft.extensions.caching.stackexchangeDis Code). < /p>
Метод setAsync вызывает метод onrediserror в случае ошибки: < /p>
...
catch (Exception ex)
{
OnRedisError(ex, cache);
throw;
}
...
< /code>
В методе onrediserror кэшированное соединение может быть обнаружено.private void OnRedisError(Exception exception, IDatabase cache)
{
if (_options.UseForceReconnect && (exception is RedisConnectionException or SocketException))
{
...
// wipe the shared field, but *only* if it is still the cache we were
// thinking about (once it is null, the next caller will reconnect)
var tmp = Interlocked.CompareExchange(ref _cache, null, cache);
...
}
}
< /code>
и Finilly, UseForCerConnect-< /p>
private bool? _useForceReconnect;
internal bool UseForceReconnect
{
get
{
return _useForceReconnect ??= GetDefaultValue();
static bool GetDefaultValue() =>
AppContext.TryGetSwitch("Microsoft.AspNetCore.Caching.StackExchangeRedis.UseForceReconnect", out var value) && value;
}
set => _useForceReconnect = value;
}

Но кажется, что воссоединение в случае ошибки в методе SetAsync не работает по умолчанию.
Также это написано здесь: https://learn.microsoft.com// En-US/Azure/Architecture/Bestpractices/Retry-Service-специфический##retry-usage-guidance-1

Клиент Stackexchange Redis управляет своими собственными Понимает, , но только при установлении соединения с кэшем, когда приложение впервые начинается . Вы можете настроить тайм -аут подключения, количество попыток повторения и время между повторными поисками для установления этого соединения, но политика повторной попытки не применяется к операциям против кэша.
< Br /> Так кажется, что есть функция, которая отключена. Могу ли я просто включить это или это плохая идея? < /P>
Есть ли другой способ воссоздать соединение в случае ошибки? Код клиента: https://github.com/dotnet/aspnetcore/bl ... he.cs#l275

Подробнее здесь: https://stackoverflow.com/questions/794 ... async-meth
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»