采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如果数据行已经存在假设存在值为101, 并且当前想要设置的值是100, 其实这种情况已经不需要去做后续的set了, 但是按照现在的逻辑还是会去抢redis锁然后去set 并且这里service层的返回值false似乎有多种可能的情况,语义有问题。
如果当前的值是101,然后希望设置为100,这种事不需要后续的setnx抢锁的。因为mysql在update操作之后,直接删除缓存即可。
但是如果目前的标签是101,希望设置的也是101,那么我们不好判断,到底标签记录是否有过初始化,因此这里需要加锁进行判断下。
这里之所以简单设计成了返回true或者false,是希望调用方不用过多关注底层的细节,所以没有做过多的包装。true就是首次设置成功,false大部分情况是之前设置过了,极少数情况会是其他并发请求导致的同一时刻插入用户标签记录。
登录后可查看更多问答,登录/注册
SpringCloudAlibaba高并发仿斗鱼直播平台实战
1.9k 17
1.1k 9
758 7
844 7
525 7
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号