Я установил клиент Redis Stack Exchange на С#. Я могу удалить только один ключ или массив ключей, но я не знаю, как удалить ключи с префиксом. Или другое решение: сначала получить все ключи по шаблону, а затем удалить их. Но я тоже не знаю, как получить ключи по шаблону.
Redis Stack Exchange, как удалить или получить ключи по шаблону
Ответы (2)
Удаление осуществляется отдельно по ключу, если только вы не очищаете всю базу данных.
Сканирование ключей легко доступно в IServer
API и подробнее обсуждается здесь: https://stackexchange.github.io/StackExchange.Redis/KeysScan
Тем не менее, его все же следует избегать в производстве - это не предполагаемый вариант использования Redis.
person
Marc Gravell
schedule
21.10.2014
Ваша ссылка на документацию мертва.
- person ErroneousFatality; 05.11.2018
@ErroneousFatality исправлено, та
- person Marc Gravell; 07.11.2018
Вы можете сделать следующее, чтобы удалить элементы из кеша 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
Он удаляет не по шаблону, как вы просили, а гораздо быстрее, чем удалять каждый ключ отдельно.
person
Kerem Demirer
schedule
14.04.2016
Как это работает в кластере? Мы получаем в два раза больше конечных точек (включая ведомые) и удаляем слишком много ключей, должны ли мы фильтровать server.IsSlave == false ?
- person MaurGi; 27.09.2017
Не пробовал, но думаю, вам следует вызывать те же серверы, которые используются в методах одиночного удаления.
- person Kerem Demirer; 06.11.2017
Также читатель должен учитывать, что могут быть другие базы данных, если используется кластер (_redisDatabase по умолчанию равен 0)
- person Ali Karaca; 12.07.2021