计数器
2013-03-07 16:21 ggzwtj 阅读(422) 评论(0) 编辑 收藏 举报Feed
减少Feed评论数
- CommentManagerImpl.deleteComment——删除评论接口
- FeedCountRelatedManagerImpl.decrCommentCount——减少Feed评论数(数据库+缓存)
- FeedDAOImpl.decrCommentCount——减少数据库中的计数
- FeedBodyManagerImpl.get——从缓存中取到FeedDO
- FeedDO评论数减一;
- FeedBodyManagerImpl.put——将FeedDO插入缓存
- FeedCountRelatedManagerImpl.decrCommentCount——减少Feed评论数(数据库+缓存)
增加Feed评论数:
- CommentManagerImpl.addComment——发表评论接口
- FeedCountRelatedManagerImpl.incrCommentCount——增加Feed评论数(数据库+缓存)
- FeedDAOImpl.incrCommentCount——增加数据库中的计数
- FeedBodyManagerImpl.get——从缓存中取到FeedDO
- FeedDO评论数加一;
- FeedBodyManagerImpl.put——将FeedDO插入缓存
- FeedCountRelatedManagerImpl.incrCommentCount——增加Feed评论数(数据库+缓存)
Feed的likeCount、recentCount和commentCount的逻辑是一样的:
likeCount:
- LikeManagerImpl.addLike
- LikeManagerImpl.deleteLike
resendCount:
- FeedManagerImpl.resendFeed
- FeedManagerImpl.deleteFeedByFeedId
User
增加关注数,关注的同时被关注者的粉丝数也会增加:
- WsnsRelationManagerImpl.addFollowPerson——加关注接口
- UserManagerImpl.incrFollowsCount——增加关注数(数据库+缓存)
- UserExtraDAOImpl.incrFollowsCountByUserId——增加数据库中用户表上的关注数
- UserCacheManager.incrFollowsCount——增加缓存中的计数
- UserCacheManager.doGetUser——取得UserCacheDO
- UserCacheDO中关注数加一;
- UserCacheManager.doPutUser——把UserCacheDO放回缓存
- UserCacheManager.incrFansCount——增加操作用户的粉丝数
- UserManagerImpl.incrFollowsCount——增加关注数(数据库+缓存)
取消关注:
- WsnsRelationManagerImpl.unFollowPerson
用户喜欢数的增加(减少的接口几乎一致,代码位置也一样):
- LikeManagerImpl.addLike——加喜欢接口
- UserManagerImpl.incrLikesCount——增加喜欢数(数据库+缓存)
- UserExtraDAOImpl.incrLikesCountByUserId——增加数据库中的喜欢数
- UserCacheManager.incrLikesCount——增加缓存中的喜欢计数
- UserCacheManager.doGetUser——取得UserCacheDO
- UserCacheDO中喜欢数加一;
- UserCacheManager.doPutUser——把UserCacheDO放回缓存
- UserManagerImpl.incrLikesCount——增加喜欢数(数据库+缓存)
用户喜欢数的减少:
- LikeManagerImpl.deleteLike
取得用户的Feed数:
- FeedManagerImpl.getMyFeedCount——取得用户发表的Feed数
- DistributedCacheManagerImpl.get——取到缓存的Feed数,缓存时间为5*60(后面发表Feed的时候会更新这个数目,那么为什么不把缓存的时间设置的长一些?)
- 取到:返回
- 未取到:
- FeedDAOImpl.countByUserId——从数据库中计算出发表的Feed总数
- DistributedCacheManagerImpl.put——将这个总数插入缓存中
- DistributedCacheManagerImpl.get——取到缓存的Feed数,缓存时间为5*60(后面发表Feed的时候会更新这个数目,那么为什么不把缓存的时间设置的长一些?)
FeedDAOImpl.countByUserId的sql:
select count(id) from wsns_feed where creator_id=#userId# and deleted=0
用户在发表Feed的时候会增加缓存中的计数(统计今天发表的Feed数也大致相同,不过在KEY中增加了日期,忘记这个接口在什么地方用到了。。):
- FeedManagerImpl.publishFeed——发表Feed
- FeedCountRelatedManagerImpl.incrPublishCount——增加计数
- WsnsCountCacheManager.incr——增减缓存中的计数
- WsnsCountCacheManager.incr——增减缓存中的计数
- FeedCountRelatedManagerImpl.incrPublishCount——增加计数
用户发表Feed数的减少:
- 目测没有。
Message
发消息时:
- MessageStoreManagerImpl.stroeSNSMessage——发消息接口
- MessageStoreManagerImpl.setUnReadCount
- 将缓存中userId对应的消息未读数加一
- 将缓存中userId+typeId对应的消息未读数加一
- MessageCountCacheManager.initCount
- MessageCountCacheManager.getTypeCount——从缓存中根据userId+type获取count数
- WsnsCountCacheManager.get——从Tair中获取计数(这个封装感觉意义不大)
- WsnsCacheManagerImpl.get——对应TairManager的操作
- WsnsCountCacheManager.get——从Tair中获取计数(这个封装感觉意义不大)
- 如果取到的消息数为0(不管是出现异常还是Tair中没有这个值都返回0。。。。。)
- SnsmessageDAOImpl.getSnsMessageTotalCountByType2——从数据库中获取指定类型的消息数
- WsnsCountCacheManager.incr——将DB中取到的消息数加到缓存中的该类型的消息计数上(其实这里的作用同put)
- WsnsCountCacheManager.incr——将DB中取到的消息数加到缓存中的该用户的消息计数上
- MessageCountCacheManager.getTypeCount——从缓存中根据userId+type获取count数
- MessageCountCacheManager.incr——增加缓存中该类型消息的计数和该用户消息的计数
- WsnsCountCacheManager.incr——增加该类型消息的计数
- WsnsCountCacheManager.incr——增加该用户消息的计数(如果上一步失败了还需要执行下一步吗?)
- MessageStoreManagerImpl.setUnReadCount
取得用户的消息数(取得指定类型的消息数时只是在getCount的时候加上了type类型而已):
- MessageReadManagerImpl.getSnsMessageTotalCount——获取用户的消息数
- MessageCountCacheManager.initCount——在取到0的时候就去数据库里面捞一把不是很妥(具体过程上面有)
- MessageCountCacheManager.getCount——从缓存中取出消息数(具体过程上面有)
根据userId+messageId删除消息的时候减少消息数:
- MessageWriteManagerImpl.deleteById——根据messageId删除消息
- MessageCountCacheManager.initCount
- MessageCountCacheManager.decr——将缓存中的计数减一
在读过消息之后,就要将对应的计数器进行修改:
- MessageReadManagerImpl.getSnsMessage——根据userId+type+pagination来获得消息
- SnsmessageDAOImpl.getSnSMessage
- 统计未读数
- SnsmessageDAOImpl.updateReadState——修改未读标志
- MessageWriteManagerImpl.updateNewMessageCount——更新新消息数
- DistributeCacheManagerImpl.getFromCachePersistence——从缓存中取出计数
- 修改计数
- DistributeCacheManagerImpl.putToCachePersistence——把新的计数值插入到缓存中
- MessageConstant.isTypeNeedStore——类型是否需要保存???这个可能有问题
- DistributeCacheManagerImpl.putToCachePersistence——将为读数设置为0,那这个函数不就是清零的操作吗?
TimeLine
获取TimeLine中的总数:
- TimeLineManagerImpl.getTimeLineCount——获取TimeLine中的Feed数(不会超过480,也就是如果超过480就返回480)
- WsnsRelationManagerImpl.queryFollowStarFromCache——从缓存中获取关注的明星的列表
- MySendQueueManagerImpl.localCacheget——获取明星发表的Feed(本地缓存+Tair)
- MySendQueueManagerImpl.mgetLastTime——获取上次更新的时间
- DistributedCacheManagerImpl.mGet——从Tair中获取
- LocalCache.getLocalCache——从本地缓存中获取发表的Feed的列表和上次更新的时间
- 如果更新时间Tair中取得的上次的更新时间一致(也就是本地缓存和Tair中列表是一致的)
- 如果不一致,从Tair中获取,并更新本地缓存
- TimelineManagerImpl.get——获取用户接收队列中的Feed数
- 返回总的Feed数
- MySendQueueManagerImpl.mgetLastTime——获取上次更新的时间
获取TimeLine中新Feed的数目:
- TimeLineManagerImpl.getTimeLineNewCount——获取新Feed数
- TimeLineManagerImpl.getTimelineFast——获取timeline
- WsnsRelationManagerImpl.queryFollowStarFromCache——取得关注的明星列表(本地缓存)
- MySendQueueManagerImpl.mgetLastTime——从本地缓存获取明星的发送队列(本地不是最新的话从Tair中获取)
- WsnsRelationManagerImpl.queryChannelFollowStarFromCache——获取关注的明星频道列表
- MySendQueueManagerImpl.mgetChannel——获取明星频道的发送队列
- TimeLineManagerImpl.get——获取用户自己的接收队列
- FeedExtCacheManagerImpl.get——从缓存中获取FeedRelationBO,在用户调用getTimeline的时候放入缓存
- 根据时间二分计算得到未读数并返回
- TimeLineManagerImpl.getTimelineFast——获取timeline
----- -- -
end