Sql server IDistributedCache正在删除密钥
我最近开始在dotnet核心web api上使用IDistributedCache的sql版本 您将如何删除/使特定用户的一组密钥无效 即:我按照此约定构建了密钥: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进
/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}%'