在签到远程调用新增积分接口后,如果积分接口报错,会出现什么问题

来源:4-20 Redis实现TOPN积分排行榜

慕仔8930017

2021-01-18

老师你好,这个问题我的第一反应是会造成数据库和缓存的不一致。

即:redis记录了签到次数,但是数据库没有对应的积分记录。且课程中的代码会返回给用户异常,但是redis已经写成功了,用户再次签到则会提示用户当前日期已完成签到,无需再签。
我想的是catch住远程调用的方法,如果发生异常,则setBit(signKey, offset, false).然后再返回给用户异常信息。
以上是我暂时想到的,还请老师指教。


写回答

1回答

InCowboy

2021-01-18

这是两个不同的业务,当然具体看产品如何定义,比如对积分要求不是那么高,那么积分服务有异常,那也可以忽略,如果积分要求很严格,比如签到一定要有积分,那么有很多种解决方案:比如不调用远程积分服务,自己写积分操作(这是最简单最安全的做法),如果调用了远程那么就可以按照你所讲的去实现,不单单是catch里面捕捉,还有远程积分服务返回的数据是不是正常的,都需要判断,判断完后如果有错误就setBit(signKey, offset, false).

0
3
慕仔8930017
回复
InCowboy
明白了,感谢老师解答
2021-01-18
共3条回复

高级Redis进阶课 解决Redis实际问题+掌握Redis6.x特性

以项目整合Redis各种场景,从此轻松应对各类Redis难题

934 学习 · 353 问题

查看课程