如何对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
有自己的属性)
- 获取加入日期在 2017 年到 2019 年之间的
Employee
? - 5 年前加入的
员工
? - 在存储记录时,按某些属性的排序顺序存储(不想在 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/