Подтвердить что ты не робот

Redis Stack Exchange, как удалить или получить ключи по шаблону

В С# я установил клиент Redis для Exchange. Я могу удалить только один ключ или массив ключей, но я не знаю, как удалить ключи с префиксом. Или другое решение может сначала получить все ключи по шаблону, а затем удалить их. Но я не знаю, как получить ключи по шаблону тоже.

4b9b3361

Ответ 1

Делеция разделяется по ключу, если вы не очищаете всю базу данных.

Ключевое сканирование легко доступно в API IServer, и здесь обсуждается гораздо больше: https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/KeysScan.md

Однако его обычно следует избегать в производстве - это не предполагаемый прецедент для redis.

Ответ 2

Для пакетного удаления элементов из кеша 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

Он не удаляется по шаблону, как вы просили, но намного быстрее, чем удалять каждую клавишу отдельно.