目录
数据类型实践案例
解决方案列表
示例
解决方案改良 取消最大值的判定,利用incr操作超过最大值抛出异常的形式替代每次判断是否大于最大值判断是否为nil,如果是,设置为Max-次数 如果不是,计数+1业务调用失败,计数-1遇到异常即+操作超过上限,视为使用达到上限示例
业务场景 使用微信的过程中,当微信接收消息后,会默认将最近接收的消息置顶,当多个好友及关注的订阅号同时发送消息时,该排序会不停的进行交替。同时还可以将重要的会话设置为置顶。一旦用户离线后,再次打开微信时,消息该按照什么样的顺序显示? 解决方案 依赖list的数据具有顺序的特征对消息进行管理,将list结构作为栈使用对置顶与普通会话分别创建独立的list分别管理当某个list中接收到用户消息后,将消息发送方的id从list的一侧加入list(此处设定左侧)多个相同id发出的消息反复入栈会出现问题,在入栈之前无论是否具有当前id对应的消息,先删除对应id推送消息时先推送置顶会话list,再推送普通会话list,推送完成的list清除所有数据消息的数量,也就是微信用户对话数量采用计数器的思想另行记录,伴随list操作同步更新示例
参照前面各节业务场景
Tips 1:redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性Tips 2:redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作Tips 3:redis应用于各种结构型和非结构型高热度数据访问加速Tips 4:redis 应用于购物车数据存储设计Tips 5:redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计Tips 6:redis 应用于具有操作先后顺序的数据控制Tips 7:redis 应用于最新消息展示Tips 8:redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等Tips 9:redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索Tips 10:redis 应用于同类型不重复数据的合并、取交集操作Tips 11:redis 应用于同类型数据的快速去重Tips 12:redis 应用于基于黑名单与白名单设定的服务控制Tips 13:redis 应用于计数器组合排序功能对应的排名Tips 14:redis 应用于定时任务执行顺序管理或任务过期管理Tips 15:redis 应用于及时任务/消息队列执行管理Tips 16:redis 应用于按次结算的服务控制Tips 17:redis 应用于基于时间顺序的数据操作,而不关注具体时间 【注】:参考黑马Redis教程:https://www.bilibili.com/video/BV1AE411j7Wq?t=5