想请教大佬们个问题

2 天前
 EmbraceQWQ
最近在搞一个私下的项目,打算开发一个页面来展示随机用户没看过的图片,打算写一个每次出图片都是用户没看过的。

想问问各位后端大佬们有没有什么好的设计思路。

我现在想的是:

每个用户都维护一个 log 表,然后加载最近 1000 条到 redis 的 布隆过滤去里面缓存保持一个星期,每次查个 5000 条或者一个特别大的数字,然后过滤出没看过的,再展示给用户。因为图片每天都会更新,我感觉他一天也看不到那么多张图片,不知道这样设计有没有问题?

图片都放在一个表里面,然后主键 ID 是雪花,一开始要求是随机,我是打算随机一个数来进行 id 取余来查询的。不过后面要求出现没有看过的,问了 gpt 也没什么好思路,来看看大佬们,有没有做过,来讨论集思广益一下。


现有的网站:

有些不是很适合点开的内容,上班或者人多不要点开。

https://www.girls-rating.com
1581 次点击
所在节点    程序员
19 条回复
NoOneNoBody
2 天前
还要看细化需求
如果每天新图很多,又没有展示旧图的需求,就很简单
>viewed_max_id ,然后随机或乱序就可以了

但如果新图的量不足够,又或者需要展示旧图,这就难一些了,需要遮罩,就是你原来的思路
leejinhong
2 天前
我觉得尽量做到伪重复即可,再一段时间内不重复或者控制重复的概率降到极低,尽量使用 redis 去去重。如果需求确实是需要做到不重复的话,我觉得最好就是每个用户维持一个类似于信息流的东西,新的就放进来 ,看过的就丢到另外一个信息流,主要处理就是如何将新的信息流塞进去每个用户的池子里面
tool2dx
2 天前
你量那么大,服务器就直接返回随机也挺好的。

如果用户需要看没看过的,那就本地客户端存一个最近 1000 条 ID 列表。正常人哪看到那么多图片。
skallz
2 天前
这种根本不需要放到后端做吧,前端不能做吗,为啥要浪费性能做这种东西。。。
vipshf
2 天前
这个项目好啊兄弟,支持
git00ll
2 天前
布隆过滤器, 偶尔重复一次也无妨吧
abc1310054026
2 天前
假设有一个无限大不重复的图片数组:
用户 1 从 0 + step * 0 开始按顺序访问
用户 2 从 0 + step * 1 开始按顺序访问
用户 n 从 0 + step * n 开始按顺序访问

这可以保证用户看到的永远是没看过的。
wangtian2020
2 天前
每隔用户给不同的种子,种子可以生成不重复的数字数组,每次输入参数加一就行了
EmbraceQWQ
2 天前
@NoOneNoBody
@leejinhong
@wangtian2020

谢了几位大佬,我也是打算往这几个方向入手。晚上先搞一个简单的 API 试试
EmbraceQWQ
2 天前
@vipshf 你是说你打开之后,不小心点了确认加载弹窗,看到了一些图片(狗头)?
BanShe
2 天前
谢谢你还好有个 Age Confirmation😂
vipshf
2 天前
@EmbraceQWQ #10 下次建议把“有些不是很适合点开的内容,上班或者人多不要点开。”这个话加粗放在最前面
abc0123xyz
2 天前
我爱这个网站!
pike0002
2 天前
纯粹来吐槽一下这个标题的
opengps
2 天前
记录图片的 md5
EmbraceQWQ
2 天前
@opengps 能详细说说吗?我没有想到这个思路
EmbraceQWQ
2 天前
@abc0123xyz 修生养性
edwardzcn98
1 天前
@leejinhong 想请教一下用 redis 去重是什么概念
leejinhong
9 小时 10 分钟前
@edwardzcn98 按照楼主所说的就是布隆过滤器

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102843

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX