缓存惹的祸

缓存惹的祸

背景

项目A遇到某些条件的情况下需要把某些消息推送至项目B,推送方式跟项目B负责人约定好后采用httpclient方式;

数据库里有一张配置表专门来配置推送的url、appId等信息,配置好后开始开发。

过程

与项目B负责人约定好了推送模板后开始开发。这里为了提高响应速度,当项目A遇到某些条件下开始推送消息(采用线程的方式)

推送类有这几个部分组成:

  • 定义ThreadPoolExecutor线程池

  • Redis缓存获取配置信息

  • 推送消息方法

开发好后本地调试推送成功,响应成功。

测试&验证

项目打包部署至测试环境测试,发现日志中并没有线程推送的日志。当时怀疑是条件不等所以没有开始推送。看了入参日志是等于这个条件的。

缓存惹的祸

之后在推送方法前后用代码打印日志,重新部署测试,发现进入推送方法后就没有然后了。原因是因为推送配置一个都没有从数据库获取,全都从redis里面获取,而redis里面的配置少了我新增的几条推送配置(没有更新),所以相当于推送了个寂寞。

解决办法

  • 推送方法里面获取url改成 config.getOrDefault("XXUrl",XXXXX),这样以后如果redis没有就使用默认的地址。

  • 写了一个清除key的方法,每次有新增配置信息,点击清除key,这样第一次就会从数据库获取在放入redis。

  • 由于目前配置新增都是手动sql插入数据库,最好是在平台上开发配置页面,每次新增修改都对redis进行修改等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值