19

我在 C# 中安装了 Stack Exchange redis 客户端。我只能删除一个键或键数组,但我不知道如何删除带前缀的键。或者另一种解决方案可以首先按模式获取所有键,然后删除它们。但我也不知道如何通过模式获取密钥。

4

2 回答 2

28

您可以执行以下操作从 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

它不会按照您的要求按模式删除,但比单独删除每个键要快得多。

于 2016-04-14T19:02:20.153 回答
14

删除是按键分开的,除非您正在刷新整个数据库。

密钥扫描在 API 上很容易获得IServer,这里有更多讨论:https ://stackexchange.github.io/StackExchange.Redis/KeysScan

但是,在生产中通常仍应避免使用它——这不是 redis 的预期用例。

于 2014-10-21T17:05:22.323 回答