ServiceStack.Redis搜索缓存

时间:2015-05-07 20:21:58

标签: c# linq c#-4.0 caching redis

我一直在使用ServiceStack.Redis几天,而我应用中的最后一个难题是搜索缓存。

我有一个简单的对象

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public int Age { get; set; }
    public string Profession { get; set; }
}

e.g。我想要归还姓名为Joe且年龄超过10岁的所有人

什么是更好的速度?

  1. 对数据库运行查询,该数据库将返回一个id列表,而不是通过Redis .GetByIds函数获取匹配的记录。
    1. 由于RedisClient没有本机Linq支持(没有AsEnumerable只有iList)来运行GetAll()而不是进行进一步过滤。
    2. 有没有人有这方面的经验?

2 个答案:

答案 0 :(得分:0)

我一直在努力解决同样的问题,我的选择是保存一组“轻”数据,表示我需要识别整个寄存器的属性o我需要过滤整个数据的属性,然后转到如有必要,其余的数据库。

我刚刚开始使用redis,我知道这可能不是最好的选择,但它最好每次都去数据库,甚至过滤信息。

希望知道您是否找到了更好的解决方案:)

答案 1 :(得分:0)

我认为Redis不是这类查询的理想选择,它没有索引,因此您可能最终构建自己的查询以满足速度要求。这根本不是一个好主意。
所以我会使用一个SQL数据库,它可以帮助我解决这些问题,甚至是Person类型上更复杂的问题。 然后,您只能使用Redis缓存将查询结果存储在其中,以便您可以轻松地通过它们进行分页或排序等操作。 至少这是我们在应用程序中执行此操作的方式。