IDistributedCache正在删除密钥

时间:2017-06-09 10:56:03

标签: sql-server .net-core distributed-cache

我最近开始在dotnet核心web api上使用sql版本的IDistributedCache。

如何为特定用户删除/无效一组密钥?

I.e:我按照这个惯例构建了键:

/users/{userId}/Key1
/users/{userId}/Key2
/users/{userId}/Section/Key3

我找不到任何方法来删除以/users/{userId}

开头的所有密钥

如何一次从IDistributedCache中删除多个项目?

1 个答案:

答案 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);
 }