Выполнение поиска в StackExchange.Redis

Я использую провайдер Stack Exchange .Net Redis для хранения и извлечения значений. Я хотел бы знать, как я могу искать определенные записи внутри Redis (как и в любой базе данных, поиск необходимо выполнять в экземпляре Redis, а не в приложении .Net)

Пример:

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public int Salary {get;set;}
}

Если у меня есть 100 000 записей о сотрудниках, хранящихся как .Net "List<Employee> lstEmployee = new List<Employee>();" на сервере кеша Redis, и я хотел бы получить только запись, чей возраст> 50 и зарплата> 5000, как я должен кодировать для этого?

Раскрытие информации: я только начинаю работать с Redis, используя этот пример .


person SoftwareQuestion    schedule 02.05.2015    source источник


Ответы (1)


Во-первых, «кэш-сервер» не предназначен для использования в качестве запрашиваемого хранилища. Если вместо этого мы предположим, что вы имеете в виду просто бэкэнд nosql, то... ну, честно говоря, это не похоже на запрос, который я бы попытался выполнить через Redis. Смысл redis в том, что вы создаете любые нужные вам индексы самостоятельно. Если вам нужны упорядоченные запросы диапазона (возраст / зарплата), то отсортированный набор и ZRANGEBYSCORE, вероятно, являются жизнеспособным вариантом; однако пересечение этих двух запросов более сложно. Вы можете попробовать задать тот же вопрос в google-группе redisdb, но только как общий вопрос о redis, не относящийся к какой-либо клиентской библиотеке, такой как SE.Redis. Если операции существуют в ib redis, то вы можете использовать клиентскую библиотеку для их вызова.

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

person Marc Gravell    schedule 02.05.2015
comment
Что было бы хорошим выбором постоянного хранилища NoSQL, которое предлагает полные универсальные возможности поиска для работы с .NET Core? - person Shimmy Weitzhandler; 20.12.2018
comment
@Shimmy определяет универсальные возможности поиска? Например, может случиться так, что RediSearch (модуль, который вы можете запустить внутри сервера Redis) соответствует вашим потребностям, или это может быть совершенно неподходящий инструмент! - person Marc Gravell; 20.12.2018
comment
Кажется, я имел в виду Document DB. Я все еще не уверен, какой из них использовать. Я бы хотел, чтобы была лицензия MIT/BSD. Mongo/Raven являются GPL. - person Shimmy Weitzhandler; 21.12.2018