php redis翻页,redis如何实现数据翻页随机不重复展示

需求是这样的

用户每翻一页都可以看到随机且不重复浏览的数据

展示数据百万级,用户数10W左右

我起初是想用redis集合来实现

先用集合记录 全部可以展示数据的id

然后用集合记录 每个用户浏览过的数据id

用户每次翻页 SDIFFSTORE 上面两个集合 取差集得出 该用户没有浏览的数据id

然后SRANDMEMBER 随机出一个页的数据id

用数据id查出详细数据

发现性能不给力给放弃了

SRANDMEMBER 随机集合越大而越慢

SDIFFSTORE 得出差集还需要写入。。。

暂时没有思路了,还得求解大神们~~~

先谢了~~

回复内容:

需求是这样的

用户每翻一页都可以看到随机且不重复浏览的数据

展示数据百万级,用户数10W左右

我起初是想用redis集合来实现

先用集合记录 全部可以展示数据的id

然后用集合记录 每个用户浏览过的数据id

用户每次翻页 SDIFFSTORE 上面两个集合 取差集得出 该用户没有浏览的数据id

然后SRANDMEMBER 随机出一个页的数据id

用数据id查出详细数据

发现性能不给力给放弃了

SRANDMEMBER 随机集合越大而越慢

SDIFFSTORE 得出差集还需要写入。。。

暂时没有思路了,还得求解大神们~~~

先谢了~~

这个最好不要使用redis,你可以从Redis中将所有ID获取到,然后保存到Session中,每次通过集合随机获取并删除一批ID,然后将剩余的ID再保存到Session。没有了就再从Redis获取一次。

php 随机 id,存到session里,和redis没多大关系

其实你这部分id可以被cache在一次session中,真的没必要没一起都计算差值,因为你不但需要计算还需要Redis本身的开销.

在session中,两个array,一个保存全部,一个保存已经用过的,每一次分配的时候,从

array_diff中随机id.

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值