功能描述:绿色标签:已关注, 蓝色标签:互相关注 , 红色标签:未关注
1、问题
(1)点开我的关注列表,里面应该出现的是绿色或者蓝色标签,但是有时候会出现红色标签,点击用户之后,发现是已关注状态。
(2)我是A,我关注了B,然后我点开B的关注列表,发现B的关注列表里面,显示有很多人我已经关注了,但实际上,我并没有关注。
2.问题排查
(1)查代码发现取关注列表的时候,先根据用户的snsId从memcache中取出实体,如果实体不为空就把bean放入list ,然后继续循环。
(2)如果1分钟缓存不存在,则从redis里面查,并判断是否被我关注
(2)这样的话有一个隐藏的问题。如果C关注了B,C刷了一遍列表,那么此时会把B存入1分钟缓存,并且B的状态是已关注,(绿色标签)。
这种情况下,D去刷C的关注列表,获取到B的snsId,然后从memcache查出B的实体,放入list,然后循环。那么问题就来了,因为C在刷列表的时候
存的B的实体,并且B的状态是绿色标签,那么D刷列表的时候,不管D有没有关注B,D刷出来的结果都是已关注。
3.解决方案
从1分钟缓存查出实体后,重新给isFollowed和isFollowing赋值,保证关注和被关注状态的实时性。