在redis中同步2个排序集的策略?

时间:2014-01-12 14:27:17

标签: redis sortedset

我有2个有序集:

mainSet:其中包含<score, id>

列表

userSet:其中包含根据某些ruless从mainSet过滤掉的一些项目。 (系统中的每个用户都有一个user64,其中userId为键)

如果mainSet中有一些更改,很可能的项目顺序将被重新排序,(如更新得分,添加新项目),那么我想相应地更新userSet。 / p>

例如,

mainSet<key, 1, id1>
mainSet<key, 2, id2>
mainSet<key, 3, id3>
mainSet<key, 4, id4>

userSet<userKey, 2, id2>
userSet<userKey, 3, id3>

mainSet中的项目将根据一些过滤规则在userSet中添加/更新

目前,要确保userSet中的项目与mainSet保持同步(例如,项目得分已更改),我必须遍历mainSet中的所有项目,检查过滤后的规则,然后重新添加userSet,但mainSet中的200个项目大约需要250毫秒。 (mainSet最多可包含1000个项目。)

我想知道我的案例是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

您应该查看Redis Keyspace Notifications? Keyspace通知是自2.8.0以来的一项功能。如果向主集添加侦听器,并且对于每个接收到的事件,验证是否应将对象移入或移出子集,则系统应自动处理更改。