使用 IDistributedCache 列出和删除给定组中的所有缓存条目

Listing and removing all cache entries from a given group using IDistributedCache

我正在 IDistributedCache 设置中存储用户生成的一些密钥。

密钥是长期存在的,如果用户知道其中的每一个,用户可以手动撤销它们:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedMemoryCache();
    //...
}

//ControllerBase:

//Adding the key:
await _cache.SetAsync(userKey, userId, new DistributedCacheEntryOptions 
{ 
    AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(10)
});

//Removing the key:
await _cache.RemoveAsync(key);

现在,我想要做的是能够列出仍然存在于缓存中且由其中一位用户创建的所有密钥。另外,我希望能够批量删除它们。

现在有这样的功能吗? 也许有取消令牌?我该怎么做?

不,您一次只能使用一个键 IDistributedCache。批量密钥驱逐和类似场景超出了这个门面的范围。如果您需要处理更高级的场景,那么您应该使用适当的客户端直接连接到您的缓存。例如,对于 Redis 支持,您可以使用 StackExchange.Redis 包,并通过它发出您喜欢的任何命令。