首页 > 其他 > 详细

Jedis线上的一个小坑:Redis有并发访问的数据错乱的问题

时间:2019-06-06 00:04:55      阅读:421      评论:0      收藏:0      [点我收藏+]

问题现象:

业务数据有错乱,A的一些数据有好几个都是B的数据

这些业务数据在保存在Redis缓存中,怀疑是并发情况下Jedis错乱的问题

 

原因分析:

  1. JedisUtil里面在使用完Jedis 后释放资源的方式不安全,会在有异常情况下没有释放干净,导致会被别的线程使用,从而导致别的线程使用了里面的数据
  2. Jedis的异常是因为 AWS做了线上维护把Redis做了主从切换,换成了b区的实例(node节点大部分在a区),导致Redis连接异常,从而引发了原因1

解决方案:

  1. 把不安全的释放shardedJedisPool.returnResource(jedis); 改成 jedis.close()
  2. 把Redis实例中的a区做为主实例区

思考:

这个还是可以通过静态代码检查尽早发现的,要重视@deprecated的告警提示,小问题点会引起线上大业务问题。 现在想着还后怕类似的问题

Jedis线上的一个小坑:Redis有并发访问的数据错乱的问题

原文:https://www.cnblogs.com/renshengjun/p/10982622.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!