Redis按照哈希列表中的喜欢排序?

时间:2015-12-11 07:32:07

标签: node.js hash redis

很抱歉,如果我的术语有误,但我有一个feed哈希列表。

所以即在这些哈希中feed:1, feed:2, feed:3我有一些关键和值。即在feed:1内{我有likes:300

我有一个名为feeds:fid的列表,其中列出了所有Feed ID。所以如果我想抓住所有的feed我可以在我的node.js

中做一个这样的方法
module.getObjects = function(keys, callback) {
    helpers.multiKeys(redisClient, 'hgetall', keys, callback);
};

我不确定如何对它们进行排序,以便按最受欢迎的方式排序所有Feed项目?理想情况下,我只想获得“最热门的饲料”项目。

我很好奇我怎么能用redis来解决这个问题?

1 个答案:

答案 0 :(得分:1)

这在你目前的事情中很难做到。 但是,您可以使用单个有序集来存储喜欢以及Feed ID。 因此,无论何时发生类似情况,您都可以在哈希中存储,但也可以 ZINCRBY对排序集中相同的Feed键进行操作。

- 在任何时间点,有序集合将包含Feed ID作为键,并将键上的喜欢数量作为分数。

- 要获得最热门或最热门的Feed,您只需执行ZREVRANGE操作,这将为您提供最多喜欢的前N项。

- 为了使您的操作保持原子性,您应使用redis transactions使数据始终在散列和有序集之间同步。