请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

set已经存在值的问题

如果数据行已经存在假设存在值为101,
并且当前想要设置的值是100,
其实这种情况已经不需要去做后续的set了,
但是按照现在的逻辑还是会去抢redis锁然后去set
并且这里service层的返回值false似乎有多种可能的情况,语义有问题。

正在回答 回答被采纳积分+3

1回答

Danny_Idea 2023-08-21 21:28:33

如果当前的值是101,然后希望设置为100,这种事不需要后续的setnx抢锁的。因为mysql在update操作之后,直接删除缓存即可。

但是如果目前的标签是101,希望设置的也是101,那么我们不好判断,到底标签记录是否有过初始化,因此这里需要加锁进行判断下。

这里之所以简单设计成了返回true或者false,是希望调用方不用过多关注底层的细节,所以没有做过多的包装。true就是首次设置成功,false大部分情况是之前设置过了,极少数情况会是其他并发请求导致的同一时刻插入用户标签记录。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号