本文共 1396 字,大约阅读时间需要 4 分钟。
根据解析token的两个方法进行统计
重点:springRedis、HyperLogLog
@Aspect@Component@Slf4jpublic class RpcLogAspect { @Resource private RedisTemplate redisTemplate; /** * 统计用户UV * @param jp * @param rvt */ @AfterReturning(returning="rvt", pointcut="execution(* com.liwen.user.dubbo.UserAuthenticationProvider.verifyAccessToken(..)) || execution(* com.liwen.user.dubbo.UserAuthenticationProvider.getUserIdByToken(..)) ") public void loginRecord(JoinPoint jp,Object rvt) { if(rvt == null){ return; } try { String time = DateTimeUtils.dateToStr(new Date(), DateTimeUtils.FORMAT_DEFAULT_YMD_NS); String key = "user" + time; if(rvt instanceof AccessTokenResult){ AccessTokenResult tokenResult = (AccessTokenResult) rvt; if (tokenResult != null && tokenResult.getUserId() > 0) { insertHyperLogLog(tokenResult.getUserId(),key); } }else if(rvt instanceof Long && (long)rvt>0){ insertHyperLogLog((long)rvt,key); } }catch (Exception e){ log.info("统计用户uv失败",e); } } private void insertHyperLogLog(Long userId,String key){ CompletableFuture.runAsync(() -> { redisTemplate.expire(key, 30, TimeUnit.DAYS); redisTemplate.opsForHyperLogLog().add(key, userId); }); }
转载地址:http://nhsvi.baihongyu.com/