马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
达人探店
发布探店条记
探店条记包罗图片和文本两部分内容,分开上传。
- 用户发奉上传图片的哀求,哀求体中携带条记的图片数据。
- 将用户上传的图片生存到Nginx服务器相应目次下。
- 用户发送发布探店条记的哀求,哀求体中携带条记的文本内容。
- 将用户上传的文本生存到数据库的tb_blog表中。
查察全部探店条记
分页查询的实现及优化
有两个参数:
- currentPage:查察哪一页的数据
- pageSize:每页纪录数
limit分页:
- 先盘算start(结果集从第几条纪录开始)
- 然后查询从第start条纪录开始的pageSize条纪录:select * from tb_blog limit {start}, {pageSize};
分页查询优化:
腾讯云:假如谁再问你“怎样优化mysql分页查询”,请把这篇文章甩给他
CSDN:分页查询原理
CSDN:口试官:Mysql万万级大表怎样举行深度分页优化
查察特定探店条记
用户查察探店条记须要查询两部分内容:探店条记和发布探店条记的用户。
在实体类Blog中,增长三个与条记作者相干的属性:userId、icon、name,由于这三个属性不是tb_blog中的字段,以是须要加上@tableField(exist = false)注解,而且须要手动赋值。
- 用户提交要查察的探店条记的id。
- 根据id在tb_blog表中查询探店条记,假如条记不存在,则直接返回错误信息。
- 根据查询到的探店条记的userId字段,在tb_user表中查询发布探店条记的用户的信息,对Blog对象的userId、icon、name赋值。
- 将Blog对象返回给客户端。
点赞
tb_blog表中的liked字段纪录每篇探店条记的点赞数量。
需求:
同一个用户只能点赞一次,再次点赞则取消点赞。
假如当前用户已经点赞,则点赞按钮高亮体现。
在Redis中使用set数据范例缓存给每一篇博客点过赞的用户id,以博客id作为key。
在Blog类中增长一个isLike字段,表现当前用户是否给这篇探店条记点过赞,须要加上@tableField(exist = false)注解。
在查察全部探店条记和查察特定探店条记的代码逻辑中:
- 后端通过查询Redis判定当前用户是否给该博文点过赞从而设置isLike字段的值。
- 前端根据返回数据中isLike字段的值来决定是否高亮体现点赞按钮。
点赞的代码逻辑中:
3. 用户提交要点赞的探店条记的id。
4. 查询Redis,通过SISMEMBER下令判定当前用户是否已经对该条记点过赞。
5. 假如没有点过赞,就将数据库中该条记的liked字段值加1,并将当前用户id参加到该条记对应的set聚集中。
6. 假如已经点多赞了,就将数据库中该条记的liked字段值减1,并将当前用户id从该条记对应的set聚集中删除。
点赞排行榜
需求:在探店条记的详情页面,展示给该条记最早点赞的TOP5用户。
改用zset数据范例存给每一篇博客点过赞的用户id,以博客id作为key,以点赞时间作为每一个用户id的score值。
在判定当前用户是否给该条记点过赞时,使用zscore key userid来查询,假如返回元素的score值则分析存在,假如返回null则分析不存在。
在查询最早点赞的TOP5用户时,先通过zrange key 0 4查出最早点赞的TOP5用户的用户id,然后去数据库中通过select ... where id in (...)查出这几个用户的其他信息,注意要通过order by field (id, ...)自界说排序次序,从而包管查询结果的次序与原次序一样。
|