Как выполнить поиск по диапазону в Redis по значимой части ключа? - PullRequest
1 голос
/ 11 июня 2019

Как выполнить поиск по диапазону на основе значения в Redis?

Я новичок в Redis. Я планирую использовать его для кеширования. Я использую библиотеку StackExchage.Redis в C #.

например, у меня есть сущность Employee:

public class Employee
{
    public int EmployeeId;
    public string Name;
    public float Age;
    public DateTime JoiningDate;
    public DateTime LeavingDate;
    public List<Department> Departments;
    public List<Address> Addresses;
}

Где EmployeeId - мой ключ, а Employee - моя ценность. У меня есть 1 млн записей такого рода в моей базе данных Redis.

Я хочу выяснить некоторые вопросы, такие как Range Queries или Sorting by some или свойство комбинации части значения (Employee object) или если Entity содержит другую сущность (например, Employee содержит Department и Department имеет собственный вид недвижимости)

  1. Получите Employee, чья дата присоединения между 2017 и 2019?
  2. Employee кто присоединился 5 лет назад?
  3. При сохранении записи, хранить в отсортированном порядке некоторые свойства (не хочу сортировать в C #)

Я храню данные в БД, используя описанный здесь пример: Redis для .NET Developer - тип данных Redis Hash

1 Ответ

0 голосов
/ 12 июня 2019

Вы не можете просто использовать Redis Hash для достижения цели, но вы можете комбинировать несколько Redis структура данных.

  • используйте хэш для хранения всех ваших данных (вы неизбежны)
  • при сортировке по дате сотрудника:
    • вы можете использовать Redis Sorted Set
    • членом Sorted-Set является ваш EmployeeId, а оценкой Sorted-Set является дата присоединения сотрудника
    • вы можете использовать ZADD для сортировки отсортированных данных и использовать ZRANGEBYSCORE, чтобы получить желаемый результат сортировки

Если у вас есть другое требование сортировки, вы должны преобразовать отсортированное свойство в число.

...