Вернуть подмножество значений Redis, соответствующих определенному свойству? - PullRequest
0 голосов
/ 16 октября 2019

Допустим, у меня есть такая модель:

public class MyModel 
{
    public long ID { get; set; }
    public long ParentModelID { get; set; }
    public long ReferenceID1 { get; set; }
    public long ReferenceID2 { get; set; }
}

Есть еще атрибуты, но для примера, это просто так. Есть около 5000 - 10000 рядов этой модели. В настоящее время хранит его в наборе Redis.

Существует ли эффективный способ в REDIS запрашивать только подмножество всего набора данных? Например, в LINQ я могу сделать:

allModels.Where(m => m.ParentModelID == my_id);

или

allModels.Where(m => m.ReferenceID1 == my_referenceid);

По сути, возможность поиска в наборе данных без возврата всего набора данных и выполнения запросов LINQ по этому поводу. Потому что запросить и вернуть 10000 строк, чтобы получить только 100, неэффективно?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Вы можете использовать OHM (Object-Hash Mapper, как ORM) на вашем любимом языке для достижения LINQ-подобного поведения. В разделе «Библиотеки и инструменты более высокого уровня» [Страница клиентов Redis]] есть довольно много (* https://redis.io/clients.

. Альтернативно, вы можете реализовать это самостоятельно, используя шаблоны, описанные в https://redis.io/topics/indexes.

0 голосов
/ 16 октября 2019

Вы не можете использовать что-то вроде LINQ в Redis из коробки. Redis - это просто хранилище ключей-значений, поэтому в нем нет тех же принципов или роскоши, что и в реляционной базе данных. У него нет запросов или связей, поэтому что-то вроде LINQ просто не переводится вообще.

В качестве обходного пути вы можете сегментировать данные, используя разные ключи. Каждый ключ может ссылаться на набор, в котором хранятся значения с определенным диапазоном ссылочных идентификаторов. Таким образом, вам не нужно будет извлекать все 10 000 элементов.

Я также рекомендовал бы посмотреть хэши , это может быть более подходящим, чем набор, в зависимости от вашего варианта использования, поскольку онилучше хранить сложные объекты данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...