【发布时间】:2020-04-28 08:45:03
【问题描述】:
我有一个考试软件系统,其中一个功能是向学生展示大量随机问题,因为以前从未向学生展示过该问题。我正在使用 redis 来实现它,所以我在我的 Redis DB 中设置了两种类型,第一种是问题库,然后每个用户都有自己的一组以前查看过的问题,这些问题在用户看到问题后会更新考试。
但是,为了提出要求,我需要从题库中为用户从未见过的每次考试找到 10 个问题。我想过使用:
SDIFFSTORE nextQuestionsToShow questionBank userQuestionsSet
SRANDMEMBER nextQuestionsToShow 10
处理结果后,我删除了生成的集合 nextQuestionsToShow。
但是,我认为这是低效的(时间和记忆方面),因为它是一个可供用户在白天随时在线的考试系统,而且题库中每个类别都有大量的问题(某些类别有超过 10 万个问题),这意味着对于每个用户来说差异是一个巨大的集合,必须存储它才能只选择 10 个随机问题。那么有没有更有效的方法来从用户之前没有回答过的问题库中随机选择 10 个问题呢?提前非常感谢。
【问题讨论】:
标签: redis