SpringBoot整合redis

1. 首先创建虚拟机安装redis

查看教程 安装redis
在这里插入图片描述这样redis就算安装好了,然后进行本地访问

  • 需要将redis.conf中的daemonize no 改为---> daemonize yes
  • vi /etc/sysconfig/iptables 中的bind 127.0.0.1改为 bind 0.0.0.0 或者将防火墙关闭

2. Redis自动配置

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)

2.1 引入场景

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--导入jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

在这里插入图片描述

  • 自动配置
  1. RedisAutoConfiguration 自动配置类。RedisProperties 属性类 --> spring.redis.xxx是对redis的配置
  2. 连接工厂是准备好的。LettuceConnectionConfiguration、JedisConnectionConfiguration
  3. 自动注入了RedisTemplate<Object, Object> : xxxTemplate;
  4. 自动注入了StringRedisTemplate;k:v都是String
    key:value
  5. 底层只要我们使用 StringRedisTemplate、RedisTemplate就可以操作redis

进行配置redis

spring:
  redis:
    url: redis://@192.168.227.129:6379
    client-type: jedis
  #或者
  redis:
    host:
    username:
    password:
    client-type: jedis 

url: redis://用户名:密码@链接地址:端口号

2.2 测试redis是否配置成功

    @Test
    void testRedis(){
        ValueOperations<String,String > operations=stringRedisTemplate.opsForValue();
        operations.set("zjj","tjk");
        String tjk = operations.get("tjk");
        System.out.println(tjk);
    }

在这里插入图片描述在这里插入图片描述

2.3 添加页面访问统计功能

2.3.1 添加redis的自定义拦截器

  • RedisCountInterceptor
@Component
public class RedisCountInterceptor implements HandlerInterceptor {

    @Autowired
    StringRedisTemplate redisTemplate;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String url = request.getRequestURI();
        redisTemplate.opsForValue().increment(url);
        return true;
    }
}

这样所有的页面请求就会通过拦截器进行统计数据
注意: 需要注解@component
这样RedisCountInterceptor 就会变成系统中的组件,后面配置拦截器的时候可以使用到

2.3.2 将拦截器加入到容器中

配置拦截器的规则

@Configuration
public class AdminMvcConfig implements WebMvcConfigurer {

    /**
     * 将拦截器加入到容器中
     * @param registry
     */
    @Autowired
    RedisCountInterceptor redisCountInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginIntercepted()).
                addPathPatterns("/**").//拦截了静态的资源
                excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");
        registry.addInterceptor(redisCountInterceptor).  //配置了一个redis统计的的拦截器
                addPathPatterns("/**").
                excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");

    }
}

2.3.3 添加controller

@Controller
public class LoginController {
    @Autowired
    StringRedisTemplate  redisTemplate;
     /**
     * 真正的跳转界面main
     * @return
     */
    @GetMapping("/main.html")
    public String mainPage(HttpSession session,Model model){

        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        String s = operations.get("/main.html");
        String s1 = operations.get("/sql");
        model.addAttribute("mainCount",s);
        model.addAttribute("sqlCount",s1);


        return "main";
    }
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值