问答 / 6 / 8 / 创建于 3年前
现在有一个产品列表,它使用 ajax 进行数据 10 个 10 个的加载。
第一时间想到的是 inRandomOrder ()。但是不能用,原因是因为当 ajax 加载第二页的时候会出现产品重复的情况,经过搜索得知通过使用 orderByRaw (“RAND ({$seed})”),当 $seed 指定为一个固定的值后,数据库会先随机排个序,然后再取出。这样就满足了我的需求,但是这种性能太低,数据量不大的情况下就得花费很长的时间。
redis 缓存 id , 然后获取随机 id 组,再根据 id 查询
后面的加载次数少的话,可以把已拉取的数据 id 过滤掉再随机后面的。次数多就不好来了
缓存你的数据到 redis 集合 然后随机取
@Su @esacpe 请问一下,随机取应该怎么实现呢?看了下文档,redis 使用集合或者列表好像不支持打乱顺序
可以了解一下 随机种子(Random Seed),通俗的解释就是生成一个种子,由这个种子来控制数据顺序,种子是固定的,种子不变,数据顺序就不变。
mysql.rjweb.org/doc.php/random 这篇文章,基本能满足你的需求。ID 连续和不连续,UUID 等都有
原因是因为当 ajax 加载第二页的时候会出现产品重复的情况
把这一次查出来的 id 存起来,下一请求的时候排除掉上一次请求的,这样不就行了吗?
其他花里胡哨的纯属给自己增加工作量
我要举报该,理由是:
推荐文章: