web-dev-qa-db-ja.com

パターンごとにキーを削除または取得する方法をRedisStack Exchange

Stack Exchange redisクライアントをC#にインストールしました。 1つのキーまたはキーの配列しか削除できませんが、プレフィックス付きのキーを削除する方法がわかりません。または、別の解決策として、最初にすべてのキーをパターンで取得してから削除することもできます。しかし、パターンごとにキーを取得する方法もわかりません。

12
Robert

データベース全体をフラッシュする場合を除いて、削除はキーごとに分けられます。

キースキャンはIServer AP​​Iですぐに利用でき、ここでさらに詳しく説明されています: https://stackexchange.github.io/StackExchange.Redis/KeysScan

ただし、通常は本番環境では回避する必要があります。これは、redisの使用目的ではありません。

8
Marc Gravell

次のようにして、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);
}

_muxerConnectionMultiplexerのインスタンスです

要求したパターンで削除することはありませんが、各キーを個別に削除するよりもはるかに高速です。

15
Kerem Demirer