2016-03-04 13 views
-1

想象一下:有人有一个巨大的网站销售,比方说,T恤。如何在同一时间使用redis进行分类和过滤?

我们希望显示按分类排序的商品列表,也可以通过参数进行筛选,比如说 - T恤颜色。我们必须给用户浏览所有的能力:

  • 报价应该由任何5个属性(创建日期, 价格,等...)

    重要要求1的可排序这1500万的报价,而不仅仅是“前N”。

    重要要求2:,他们必须能够在任何时间跳转到一个随机页面,而不仅仅是通过他们轻弹顺序

我们使用某种传统的数据存储(MongoDB的,确切地说)。

问题是,MongoDB(以及其他传统数据库)在大偏移量方面表现不佳。 (例如 - 通过颜色),如果用户想通过创建日期与一些额外的滤镜来分类的这个巨大的名单中间的某个位置来获取结果的页面想象

没有描述这样的问题的文章: http://openmymind.net/Paging-And-Ranking-With-Large-Offsets-MongoDB-vs-Redis-vs-Postgresql/

现在好了,所以我们被告知redis是类似问题的解决方案。你“只是”需要准备某些数据结构并搜索它们而不是主存储器。

的问题是:

你建议对子级,以便与Redis的解决这个用什么样的结构和方法的?

回答

1

Sorted Sets,ZRANGE翻页。

+1

虽然过滤你创建一个过滤器的排序集并与选定的与ZINTERSTORE相交http://redis.io/commands/zinterstore –

+0

非常真实,但我确实尝试保持在30个字符的限制内;) –

+0

可以你请告诉我更多细节?我为每个过滤器排序集中的值分配了什么样的分数? zineterstore的结果应该是什么样的分数?我是否需要对此结果键进行时间限制以节省内存? – user1312695

相关问题