springboot+redis+aop 实现页面访问量统计功能

本文介绍了使用SpringBoot、Redis和AOP实现页面访问量统计的方法。通过AOP切面获取方法调用次数,利用Redis进行高性能的读写统计,避免直接操作数据库。使用HyperLogLog数据结构进行去重计数,并定时将数据落盘。文章讨论了设计的键值结构以及系统的潜在缺点,如性能和实时性的权衡。
摘要由CSDN通过智能技术生成

springboot实现页面统计

使用springboot+redis+spring aop+spring schedule实现页面访问量统计功能

思路介绍

页面访问访问量统计,常用的springboot项目中,我们的controller的获取文章的方法主要是

public class Controller{
   
    @GetMapping("/blogs/get/{blogId}")
    public String get(Model model,@PathVariable("blogId") Integer blogId){
   
        Blog blog = blogService.getById(blogId);
        model.addAttribute("blog",blog);
        return "/admin/blog";
    }
}

每调用一次该方法可以认为,就有一次用户访问了该页面,那么只需要统计访问接口的用户数量或者调用次数即可,如果为了真实,可以统计真实访问量,也可以统计接口调用次数

那么如何统计呢?

页面访问功能是一个独立的功能,就想日志系统,为了避免侵入代码,这里使用spring AOP进行切面操作

AOP切面获取方法调用次数

具体AOP的使用方法就不介绍了,为了灵活性,我使用注解方式进行切面,也可以直接切get()方法

package top.zhangzhongyao.codeblog.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.JoinPoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import top.zhangzhongyao.codeblog.scheduled.RedisToMySQL;
import top.zhangzhongyao.codeblog.service.RedisService;

import javax.servlet
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值