使用 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
包,并通过它发出您喜欢的任何命令。
我正在 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
包,并通过它发出您喜欢的任何命令。