场景:记录一个用户上次浏览图书的第几章第几节第几题,用 redis 还是 mysql 呢?

2023-10-16 17:34:23 +08:00
 yuyang1992test

个人感觉不是一个重要的数据,比较倾向于用 redis,如果用 mysql 的话估计得分表了吧? 表的数量=userCount * bookcount redis 的 key userID:{uid}:bookId:{bookID} val: '1-2-5', 表示第 1 章第 2 节第 3 题。 存的都是他们的 id

1551 次点击
所在节点    数据库
24 条回复
xmai
2023-10-16 18:05:39 +08:00
如果你需要读取性能和高并发,用 redis 。每个用户使用一个唯一的键名,如 user:{user_id}:book:{book_id}来记录其浏览位置,包括章、节和题号并将用户的浏览位置以字符串形式 ‘1-2-5’ 保存到 Redis 中。

如果你需要更加复杂的查询操作或者有较大的数据量,用 mysql 一把梭。
libook
2023-10-16 18:09:34 +08:00
高频读取用 Redis ,低频读取存数据库,不需要跨端就记录到客户端/浏览器本地,部分场景还可以记录到 URL 里。
HFcbyqP0iVO5KM05
2023-10-16 18:26:08 +08:00
KISS
yuyang1992test
2023-10-16 19:00:00 +08:00
@gulu kiss 是什么
yuyang1992test
2023-10-16 19:00:41 +08:00
@libook 这个数据丢失是不是可以接受的是关键
XiLingHost
2023-10-16 19:57:38 +08:00
这种没有固定的格式的,随意性比较大的数据,可以考虑用 nosql 比如说 mongodb 、es 之类的东西存,这些是有持久化的
oneisall8955
2023-10-16 20:01:04 +08:00
redis 一把梭,一般这种用户行为也会接上埋点,丢失数据能找回来,不慌
yuyang1992test
2023-10-16 20:08:28 +08:00
@XiLingHost 现在依赖的就只有 mysql 和 redis,不太可能为了这个需求引入一个中间件
yuyang1992test
2023-10-16 20:09:05 +08:00
@oneisall8955 那还设置过期时间吗
bigbigeggs
2023-10-16 20:13:51 +08:00
这种存图书的,后端怎么设计的。比如第一页的内容如何返回前端的,毕竟前端可能是小屏幕也可能是大屏幕,甚至可以伸缩等等,怎么分割呢
yuyang1992test
2023-10-16 20:15:03 +08:00
@bigbigeggs 我这边只存章节和题目,类似于教材答案
yuyang1992test
2023-10-16 20:19:11 +08:00
@bigbigeggs 小说的话一页一页的村吧,至于显示问题就是前端做适配了
aLazarus
2023-10-17 09:59:37 +08:00
我记得 b 站的 url 可以分享进度,多平台之间也可以同步进度,可能是 url+redis 的方式实现的?
dongtingyue
2023-10-17 09:59:56 +08:00
前端存储加 mysql 。redis 没必要吧。
LouGaZen
2023-10-17 10:33:22 +08:00
@yuyang1992test #4 Keep It Simple and Stupid ,取各单词的首字母
picone
2023-10-17 10:46:30 +08:00
用户本地存储。。
yuyang1992test
2023-10-17 11:03:18 +08:00
@picone 存到 app 吗?那 app 卸载重装是不是就没了?
yuyang1992test
2023-10-17 11:06:51 +08:00
@libook 那存到 app 的话,岂不是一卸载就没了吗
yuyang1992test
2023-10-17 11:07:13 +08:00
@xmai 没有复杂查询,也没有高并发
yuyang1992test
2023-10-17 11:08:01 +08:00
@picone 那卸载了不就没了嘛

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

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

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

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

© 2021 V2EX