pat*_*ckn 6 sorting caching redis
我有一些我已经在标准Redis hashmap中缓存的数据,而且我遇到了需要响应客户端订购和过滤请求的情况.名称,平均评分和评论数量的订单排名可以定期更改(可能每分钟多次).任何人都可以建议我采取适当的策略来攻击这个问题吗?请考虑以下示例以帮助理解我正在寻找的内容:
到目前为止我考虑过的策略:
关于如何最好地解决这个问题的任何其他想法或建议?提前致谢.
因此,正如下面的评论中提到的,排序集是在缓存中实现排序和过滤功能的好方法。以下面的示例为例,说明如何解决需要对哈希中的对象进行排序的问题:
给定一个名为“movies”的散列,其方案为 Bucket:objectId -> object,它是 JSON 字符串表示形式(请在此处阅读有关“存储散列”以提高性能的信息。
创建一个名为“movieRatings”的排序集,其中每个成员都是来自“movies”哈希的 objectId,其分数是所有评级值的平均值(由数据库计算)。只需使用您要排序的任何内容的数字表示,Redis 就如何提取您需要的切片提供了很大的灵活性。
这个简单的方案在实现方面具有很大的灵活性 - 您只需向排序集询问一组符合您要求的键,然后使用 HMGET 从“电影”哈希中查找这些键。两次快速的 Redis 调用,问题解决了。
冲洗并重复您需要的任何类型的排序,例如“评论数量”、“按字母顺序”、“演员计数”等。过滤也可以以这种方式完成,但普通集可能足以满足该目的。