黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目
总时长 42:48:00 共175P
此文章包含第78p-第p87的内容 包含实战篇01-10的内容
文章目录
达人探店功能
需求
这个表没有用户名称和图标 我们在对象类里加一下
原始写法
点赞功能
sql写法
这种写法没有判断点赞的是不是同一人
完善
给blog对象类里加一个是否点赞属性
这里后期会对数据库操作使用mq进行异步处理(这样性能会变好)
用sismember命令进行判断 是否存在在这个set集合里
BooleanUtil.isFalse()代表值 是false
点赞排行榜
使用SortedSet进行排序
通过查找元素分数进行判断是否存在
跟据ZRANGE 命令进行查找前几的数据
改造代码为ZSet
防止空指针
用户未登录的状态判断一下
按自定义的id顺序进行排序
修改sql语句
改为
好友关注-关注和取关
好友关注-共同关注
使用redis的set数据结构进行交集查询
将关注用户加入redis
造两个关注数据
好友关注-关注推送
Feed流
Timeline 多用于朋友圈
智能排序 多用于首页推荐等
关注的人推送的消息我们使用Timeline
使用Timeline得到关注的人推送的消息
拉模式
每个人发送内容的时候都把其加上时间戳并且放到一个发件箱里, 粉丝读取的时候 从这些人的发件箱里拉取信息
然后按照时间排序
优点节省内存空间,缺点每次都需要重新拉取消息,然后做排序(耗时较久)
推模式
优点:延时很低,缺点:内存占用极大,而且如果粉丝上百万,每次发送都需要发出百万份信息,
推拉模式(读写混合模式)
这种模式就是 普通用户(粉丝少的)就使用推模式,大v(千万以上的粉丝)就使用拉模式,并且跟他互动多的活跃用户或者他的朋友就使用推模式
如果没有千万粉丝以上的都可以使用推模式
这里我们使用推模式
如果使用传统的分页模式 会产生分页混乱
滚动分页 记住上次查到的最后一个值 从他开始查
代码
推送成功
如果分数会重复的话,会出现这种情况
取值代码