c# - 如何在 Redis 中对 Key 的值部分进行范围查询搜索?

标签 c# redis stackexchange.redis

如何对Redis的值部分进行范围查询检索?

我是 Redis 新手。我打算用它来缓存。我在 C# 中使用 StackExchage.Redis 库。

例如我有实体 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 对象是我的值。 我的 Redis 数据库中有 1M 条此类记录。

我想找出某些问题,例如范围查询或按值部分(Employee 对象)的某些或组合属性排序,或者实体是否包含另一个实体(例如 Employee包含 Department 并且 Department 有自己的属性)

  1. 获取加入日期在 2017 年到 2019 年之间的 Employee
  2. 5 年前加入的员工
  3. 在存储记录时,按某些属性的排序顺序存储(不想在 C# 中排序)

我使用此处描述的示例将数据存储在数据库中:Redis for .NET Developer – Redis Hash Datatype

最佳答案

你不能仅仅使用 Redis Hash 来达到目标​​,但你可以结合多个 Redis 数据结构。

  • 使用哈希存储你所有的数据(你不可避免的)
  • 当您按员工日期排序时:
    • 你可以使用Redis Sorted Set
    • Sorted-Set成员是你的EmployeeId,Sorted-Set分数是Employee join date
    • 您可以使用 ZADD 存储排序后的数据,并使用 ZRANGEBYSCORE 获取您想要的排序结果

如果您有其他排序要求,您必须将已排序的属性转换为数字。

关于c# - 如何在 Redis 中对 Key 的值部分进行范围查询搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548916/

相关文章:

c# - 我应该为动态报告生成器使用哪种设计模式?

python - 合并和求和 redis 有序集

django - Celery + Redis - Django 在延迟触发任务时阻塞

c# - 无法连接到azure redis缓存

c# - StackExchange.Redis 中的刷新/清空数据库

c# - 为什么当 Alpha==0 时 System.Drawing.Graphics 会消隐 RGB channel ?

c# - 检查二维数组的 Rows 是否为 true

c# - ASP.NET MVC3 : Displaying Validation Errors from Child View in Parent View

java - 绝地武士集群 : Scan For Key does not work

redis - 使用 RediSearch 对实体进行简单的字符串和整数索引