我最近开始在dotnet核心web api上使用sql版本的IDistributedCache。
如何为特定用户删除/无效一组密钥?
I.e:我按照这个惯例构建了键:
/users/{userId}/Key1
/users/{userId}/Key2
/users/{userId}/Section/Key3
我找不到任何方法来删除以/users/{userId}
如何一次从IDistributedCache中删除多个项目?
答案 0 :(得分:0)
通过SQL语句删除不是一个好的解决方案,因为webapp进程执行某种锁定。例如,在只有两个记录的以下简单查询Delete from SqlSession
上,三分钟半后,我不得不手动停止。
所以我最终以这种方式结束:我使用
这样的简单查询来检索数据Select Id from SqlSession where Id like 'MyIdGroup%'
或使用实体框架
var cacheElementsToDelete = await _dbContext.SQLSessions
.Where(a => a.Id.StartsWith("MyIdGroup"))
.ToListAsync();
然后我使用IDistributedCache
的方法删除每个项目
foreach (var item in cacheElementsToDelete)
{
await _cache.RemoveAsync(item.Id);
}