alv*_*peo 4 c# caching distributed-caching .net-core
我需要IDistributedCache在我的应用程序中使用它,它可以是MemoryDistributedCache或RedisCache作为底层实现。我的理解是这些不是线程安全的,所以我使用ReaderWriterLockSlim.
ReaderWriterLockSlim允许多个线程进行读取或独占访问进行写入。现在我想知道它是否适合这项工作,MemoryDistributedCache以及RedisCache阅读方法是否是线程安全的。
至于整体解决方案 - 我知道从像 Redis 这样的分布式缓存中存储和读取值需要时间。但我没有太多选择,因为我存储的值获取和管理的速度更慢。
这是片段:
...
public async Task<byte[]> GetAsync(string key, CancellationToken token = new CancellationToken())
{
_cacheLock.EnterReadLock();
try
{
return await _cache.GetAsync(GetCacheKey(key), token);
}
finally
{
_cacheLock.ExitReadLock();
}
}
public async Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, CancellationToken token = new CancellationToken())
{
_cacheLock.EnterWriteLock();
try
{
await _cache.SetAsync(GetCacheKey(key), value, options, token);
}
finally
{
_cacheLock.ExitWriteLock();
}
}
public async Task RemoveAsync(string key, CancellationToken token = new CancellationToken())
{
_cacheLock.EnterWriteLock();
try
{
await _cache.RemoveAsync(GetCacheKey(key), token);
}
finally
{
_cacheLock.ExitWriteLock();
}
}
Run Code Online (Sandbox Code Playgroud)