存储数据的最佳方式,同时具有有序列表

时间:2016-05-12 09:27:52

标签: redis cron sortedset

我的那些数据变化不足以不在我的postgres表中。 我想从这些数据中获得最高分。 我试图找出一种方法来考虑:

  • 易于使用
  • 性能

1。使用Hash + CRON经常构建有序集

在这种情况下,我有很多用户数据存储在哈希中,如下所示:

u:25463:d = { "xp":45124, "lvl": 12, "like": 15; "liked": 2 }

u:2143:d = { "xp":4523, "lvl": 10, "like": 12; "liked": 5 }

如果我想获得更高级别的前15名。我不认为我可以用一个命令来做到这一点。我想我需要扫描所有u:x:d数据并从中构建有序集合。我错了吗? 在这种情况下表现怎么样?

2.Multiple Ordered sets

在这种情况下,我复制了数据。 我仍然需要第一个案例,但我也更新了不同的排序集中的数据,我不需要使用CRON来构建它们。

我觉得最好的方法是第一个,但如果我有1000000个用户怎么办?

还是有另一种方式吗?

1 个答案:

答案 0 :(得分:1)

一种可能性是使用单个有序集合+哈希。

排序集只是用作查找,它会将用户哈希的密钥存储为值,将其级别存储为分数。

每当你添加一个新玩家/更新他们的等级时,你都会设置散列,并将该项插入到有序集中。您可以在基于事务的管道或lua脚本中执行此操作,以确保它们同时运行,从而保持数据的一致性。

获得顶级玩家意味着抓住排序集中的顶级条目,然后使用该组中的键,以查找具有散列的那些玩家的完整数据。

希望有所帮助。