В С# я установил клиент Redis для Exchange. Я могу удалить только один ключ или массив ключей, но я не знаю, как удалить ключи с префиксом. Или другое решение может сначала получить все ключи по шаблону, а затем удалить их. Но я не знаю, как получить ключи по шаблону тоже.
Redis Stack Exchange, как удалить или получить ключи по шаблону
Ответ 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
Он не удаляется по шаблону, как вы просили, но намного быстрее, чем удалять каждую клавишу отдельно.