基于Redis的消息中心缓存搭建

针对大批用户涌入消息中心导致的数据库负载问题,本文提出基于Redis的缓存解决方案。通过补全索引、读写分离解决部分问题,然后详细介绍了如何利用Redis缓存常规消息、系统及布告板消息、推广消息,以减轻数据库压力,提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

问题分析

在以往的经历中出现了在大批用户涌入消息中心时,造成数据库负载急剧升高的问题,经过排查,发现原因主要有以下几点:

  1. 消息中心相关表中,部分体量较大的数据表没有创建索引,查询操作中数据库连接不能及时释放,导致API服务器不能及时响应,拖垮API服务器;
  2. 目前的访问量级对消息中心没有做数据库的读写分离,导致在缺失索引的情况下,影响主库性能,拖累其他业务;

目前解决方案

  1. 结合数据库日志,补全消息中心索引;
  2. 对消息中心数据库进行读写分离操作,降低主库压力;

仍然存在的问题

在完成上述改造后,仍然有部分较为严重的问题,比如:

  1. 在发送真对全量用户的布告板消息时,在仅依靠数据库的前提下,采用为每个用户插入相同的消息来处理,从而导致数据库中无效数据的增多。(需求方不允许单独拆分出公告消息,需将公告消息合并至系统消息中)
  2. 对于一些活动推广消息,增加用户组概念,即:对于推广消息,不用的用户查询到的推广消息的内容不同,依赖数据库进行用户分组的查询,即使在创建索引的情况下,仍会导致查询开销的急剧增长;
  3. 对于推广消息,支持多图文等富文本格式,依赖数据库查询,在做推广活动时,可能会导致数据库负载明显升高;

需求

类似于淘宝的消息中心,主要体现在如下几点:

  1. 系统中心首页包涵多个选项卡:喜欢消息,关注消息,评论消息,系统消息(包含公告板消息),推广消息,物流消息等;
  2. 推广消息分用户组进行查看;
  3. 推广消息详情支持多图文;

解决方案

基于上述需求单独依赖数据库的话,查询或者更新的开销均较大,因此对消息中心进行缓存改造,由于目前公司的业务需求,缓存系统基于redis,为了增强缓存中内容的可读性,缓存中存放类的信

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值