采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师你好,这个问题我的第一反应是会造成数据库和缓存的不一致。
即:redis记录了签到次数,但是数据库没有对应的积分记录。且课程中的代码会返回给用户异常,但是redis已经写成功了,用户再次签到则会提示用户当前日期已完成签到,无需再签。我想的是catch住远程调用的方法,如果发生异常,则setBit(signKey, offset, false).然后再返回给用户异常信息。以上是我暂时想到的,还请老师指教。
这是两个不同的业务,当然具体看产品如何定义,比如对积分要求不是那么高,那么积分服务有异常,那也可以忽略,如果积分要求很严格,比如签到一定要有积分,那么有很多种解决方案:比如不调用远程积分服务,自己写积分操作(这是最简单最安全的做法),如果调用了远程那么就可以按照你所讲的去实现,不单单是catch里面捕捉,还有远程积分服务返回的数据是不是正常的,都需要判断,判断完后如果有错误就setBit(signKey, offset, false).
感谢老师解答。积分接口报错除了咱们上面提到的影响点,请问老师还会有其他影响吗?
差不多就是这些了,有的为了提高性能这里还使用异步,为了确保积分的安全问题,在添加积分这里可以做一层日志的,方便排错,当然还可以追加监控和链路的追踪
明白了,感谢老师解答
登录后可查看更多问答,登录/注册
以项目整合Redis各种场景,从此轻松应对各类Redis难题
1.2k 11
2.2k 9
1.0k 8
743 7
1.0k 7