IDistributedCache 删除密钥

Pie*_*ter 5 sql-server distributed-cache .net-core

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

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

即:我构建了遵循此约定的密钥:

/users/{userId}/Key1
/users/{userId}/Key2
/users/{userId}/Section/Key3
Run Code Online (Sandbox Code Playgroud)

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

如何一次从 IDistributedCache 中删除一项以上?

Fra*_*ini 0

通过 SQL 语句删除并不是一个好的解决方案,因为 webapp 进程执行某种锁定。例如,我必须在三分半钟后手动停止以下Delete from SqlSession只有两条记录的简单查询。

所以我最终是这样的:我用一个简单的查询来检索数据,比如

Select Id from SqlSession where Id like 'MyIdGroup%'
Run Code Online (Sandbox Code Playgroud)

或使用实体框架

 var cacheElementsToDelete = await _dbContext.SQLSessions
     .Where(a => a.Id.StartsWith("MyIdGroup"))
     .ToListAsync();
Run Code Online (Sandbox Code Playgroud)

然后我使用 的方法IDistributedCache来删除每个项目

 foreach (var item in cacheElementsToDelete)
 {
     await _cache.RemoveAsync(item.Id);
 }    
Run Code Online (Sandbox Code Playgroud)