【发布时间】:2014-12-16 19:17:21
【问题描述】:
我在 C# 中安装了 Stack Exchange redis 客户端。 我只能删除一个键或键数组,但我不知道如何删除带前缀的键。 或者另一种解决方案可以首先按模式获取所有键,然后删除它们。但我也不知道如何通过模式获取密钥。
【问题讨论】:
标签: c# redis stackexchange.redis
我在 C# 中安装了 Stack Exchange redis 客户端。 我只能删除一个键或键数组,但我不知道如何删除带前缀的键。 或者另一种解决方案可以首先按模式获取所有键,然后删除它们。但我也不知道如何通过模式获取密钥。
【问题讨论】:
标签: c# redis stackexchange.redis
删除是按键分开的,除非你刷新整个数据库。
在IServer API 上很容易获得密钥扫描,这里有更多讨论:https://stackexchange.github.io/StackExchange.Redis/KeysScan
但是,在生产环境中通常仍应避免使用它——这不是 redis 的预期用例。
【讨论】:
您可以按照以下方式从redis缓存中批量删除项目。 (StackExchange.Redis.StrongName v1.0.488)
foreach (var ep in _muxer.GetEndPoints())
{
var server = _muxer.GetServer(ep);
var keys = server.Keys(database: _redisDatabase, pattern: pattern + "*").ToArray();
_db.KeyDeleteAsync(keys);
}
_muxer 是ConnectionMultiplexer 的实例
它不会按照您的要求按模式删除,但比单独删除每个键要快得多。
【讨论】:
_muxer 的 DI 是什么?我正在使用 services.AddStackExchangeRedisCache 并尝试 DIing ConnectionMultiplexer,但它返回为空。