Я использую библиотеку StackOverflow.Redis
для взаимодействия с сервером Redis Azure для извлечения некоторых хеш-значений для доступа через веб-API.Вот как я это делаю:
IDatabase cache = lazyConnection.Value.GetDatabase();
var server = lazyConnection.Value.GetServer(lazyConnection.Value.GetEndPoints().First());
var starterKeys = server.Keys(pattern: "Monitor:*");
var count = 0;
foreach (var starterKey in starterKeys)
{
var hashEntries = cache.HashGetAll(starterKey);
foreach (var hashEntry in hashEntries)
{
//put values into my model here...
}
count++;
}
Есть ровно 22 ключа, которые соответствуют шаблону "Monitor:*"
(найдено путем отладки и просмотра значения count
в конце).Однако этот фрагмент кода, извлекающий эти 22 ключа и хэша, занимает 55 секунд .Значения хеша тоже не очень велики.В каждом хэше содержится около 19 пар ключ-значение (например, имя, компания, адрес электронной почты, телефон и т. Д. Ничего особенного).
Почему это так долго?Я подумал, что одной из причин использования Redis было быстрое снижение нагрузки на базу данных за счет хранения агрегированных данных.Я мог бы установить это в своей базе данных и запросить его (даже с объединениями для получения агрегированных данных), и мой процесс был бы значительно быстрее, чем 55 секунд.
Я что-то здесь не так делаю?Или я не понимаю цели или правильного использования Redis?
И, самое главное, что я могу сделать, чтобы быстрее получить эти ключи и значения хеш-функции?