使用 Azure Redis 缓存的重试策略
Retry policy using Azure Redis Cache
最近我们从 Azure 角色缓存转移到 Azure Redis 缓存(Azure 网站正在使用它)。
我现在正在审查代码,一行引起了我的注意。
using Microsoft.Practices.TransientFaultHandling;
// CODE
_retryPolicy = new RetryPolicy<CacheTransientErrorDetectionStrategy>(retryStrategy);
// CODE
_retryPolicy.ExecuteAction(() => dataCache.StringGet(fullCacheKey));
TransientFaultHandling 程序集的 RetryPolicy 对 Redis 缓存有意义吗?还是因为我们使用的是 Azure Redis 而不是 In-Role 缓存,所以这段代码实际上不再有任何用途?
这是正确的。您可以重用 RetryPolicy 逻辑
你怀疑它是正确的,CacheTransientErrorDetectionStrategy
是专门为 Windows Azure 缓存构建的。
/// <summary>
/// Provides the transient error detection logic that can recognize transient faults when dealing with Windows Azure Caching.
/// </summary>
您可以保留 RetryPolicy,但您需要将错误检测策略替换为您自己的 ITransientErrorDetectionStrategy
实现,例如检测超时异常。
最近我们从 Azure 角色缓存转移到 Azure Redis 缓存(Azure 网站正在使用它)。
我现在正在审查代码,一行引起了我的注意。
using Microsoft.Practices.TransientFaultHandling;
// CODE
_retryPolicy = new RetryPolicy<CacheTransientErrorDetectionStrategy>(retryStrategy);
// CODE
_retryPolicy.ExecuteAction(() => dataCache.StringGet(fullCacheKey));
TransientFaultHandling 程序集的 RetryPolicy 对 Redis 缓存有意义吗?还是因为我们使用的是 Azure Redis 而不是 In-Role 缓存,所以这段代码实际上不再有任何用途?
这是正确的。您可以重用 RetryPolicy 逻辑
你怀疑它是正确的,CacheTransientErrorDetectionStrategy
是专门为 Windows Azure 缓存构建的。
/// <summary>
/// Provides the transient error detection logic that can recognize transient faults when dealing with Windows Azure Caching.
/// </summary>
您可以保留 RetryPolicy,但您需要将错误检测策略替换为您自己的 ITransientErrorDetectionStrategy
实现,例如检测超时异常。