Sql server IDistributedCache正在删除密钥

Sql server IDistributedCache正在删除密钥,sql-server,.net-core,distributed-cache,Sql Server,.net Core,Distributed Cache,我最近开始在dotnet核心web api上使用IDistributedCache的sql版本 您将如何删除/使特定用户的一组密钥无效 即:我按照此约定构建了密钥: /users/{userId}/Key1 /users/{userId}/Key2 /users/{userId}/Section/Key3 我找不到任何方法来删除以以下开头的所有键:/users/{userId} 如何一次从IDistributedCache中删除多个项?通过SQL语句删除不是一个好的解决方案,因为webapp进

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

您将如何删除/使特定用户的一组密钥无效

即:我按照此约定构建了密钥:

/users/{userId}/Key1
/users/{userId}/Key2
/users/{userId}/Section/Key3
我找不到任何方法来删除以以下开头的所有键:
/users/{userId}


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

通过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);
 }    

如果有人想知道,我最终使用如下查询在缓存表上运行了一个SQL delete函数:delete FROM[dbo].[cache]Where Key like'/users/{userId}%'