【SpringBoot】使用Redis

news2024/9/27 7:17:14

目录

0. 安装Redis

1. 导入依赖

2. 配置Redis

3. idea连接Redis

4. 使用Redis简单实现记录访问次数

        1. 配置拦截器

        2. 定义拦截器

        3. 控制器类


0. 安装Redis

        我使用的是本地Redis服务器,安装过程。安装完成后启动Redis服务。

1. 导入依赖

<!--        redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
<!--        redis中用于对象进行序列化和反序列化的jackson依赖-->
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>

2. 配置Redis

        application.yml

spring:
  data:
    redis:
      host: localhost
      port: 6379
      password:
#        使用的Redis数据库索引,这里是0,表示使用默认数据库。
      database: 0
      lettuce:
        pool:
#          连接池中最大活跃连接数
          max-active: 10
#          连接池中最大空闲连接数
          max-idle: 8
#          连接池中最小空闲连接数
          min-idle: 0
#          连接池中连接获取的最大等待时间
          max-wait: 5s

        application.properties

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=
spring.data.redis.database=0
spring.data.redis.lettuce.pool.max-active=10
spring.data.redis.lettuce.pool.max-idle=8
spring.data.redis.lettuce.pool.min-idle=0
spring.data.redis.lettuce.pool.max-wait=5s

3. idea连接Redis

        连接步骤如下。

        配置连接的参数。

        连接成功后可以看到该界面。

4. 使用Redis简单实现记录访问次数

        使用springMVC拦截器实现记录访问次数。

        1. 配置拦截器

@Configuration
@ComponentScan("com.huan.web")
public class InterceptorConfig implements WebMvcConfigurer {
    //这里需要注入拦截器,确保 RedisTemplate 在拦截器之前被正确创建和注入
    @Autowired
    private MyInterceptor myInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //将一个新的 MyInterceptor 实例添加到拦截器注册表中
        //拦截/resfood/getById-map/*所有请求
        registry.addInterceptor(myInterceptor).addPathPatterns(
                        "/resfood/getById-map/**");
    }
}

        注意如果这里没有注入拦截器,可能会因为由于 RedisTemplate 没有正确注入到你的拦截器中导致空指针异常(如下图)。

        2. 定义拦截器

        在拦截器中使用RedisTemplate记录访问的次数。

@Component
public class MyInterceptor implements HandlerInterceptor {
    /*
        Spring Data Redis 提供的一个模板类,用于简化与 Redis 数据库的交互
        类似于map类型,可以存储和检索各种类型的数据,包括字符串、对象、集合等。
        但是,它提供了一些额外的功能,如键的过期时间、哈希表操作、列表操作等。
    */
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    /**
     * 在请求处理之后,视图渲染之前执行,用于进行资源清理
     */
    @Override
    public void postHandle(HttpServletRequest request, 
                    HttpServletResponse response, 
                    Object handler, 
                    ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
        //输出接收的请求
        System.out.println(request.getRequestURI());
        String[] key = request.getRequestURI().split("/");
        System.out.println(Arrays.toString(key));
        //              操作值         自增1     键名为key[2]+":"+key[3]形成的新字符串
        redisTemplate.opsForValue().increment(key[2]+":"+key[3]);
    }
}

        3. 控制器类

        写一个简单的测试的控制器类。

@RestController
@RequestMapping("test")
//swagger注解
@Tag(name = "测试",description = "测试springMVC拦截器实现记录访问次数")
public class TestController {
    //rest风格url
    @GetMapping("getInfo/{id}")
    public String test(@PathVariable Integer id) {
        switch (id){
            case 1:
                return "1";
            case 2:
                return "2";
            default:
                return "3";
        }
    }
}

        4. 测试

        在测试前在idea中查看redis中的数据,在测试前redis中没有任何数据。

        在浏览器地址栏(或其他工具)输入localhost:8080/test/getInfo/1,进行测试。

        控制台输出。

        再次查看redis中的数据,发现多了键值,也记录了访问数据。

        over,收工

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL常见100面试题解析

文章目录 内容简介SQL 初级查询SQL 高级查询设计与开发总结 内容简介 本文介绍并分析了常见的 100 道 SQL 面试题&#xff0c;主要分为三个模块&#xff1a;SQL 初级查询、SQL 高级查询以及数据库设计与开发。内容结构如下图所示&#xff1a; 本文主要使用三个示例表&#xf…

Github 2024-09-06 Java开源项目日报Top10

根据Github Trendings的统计,今日(2024-09-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目2非开发语言项目1JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache License …

Java队列详细解释

队列 一、什么是队列&#xff08;Queue&#xff09; java队列是一种线性数据结构&#xff0c;它的特点是先进先出。在队列中&#xff0c;元素的添加&#xff08;入队&#xff09;操作在队尾进行&#xff0c;而元素的移除&#xff08;出队&#xff09;操作则在队头进行。因此&a…

『功能项目』账号登陆注册界面UI搭建【27】

打开上一篇26DOTween动态文字的项目&#xff0c; 本章要做的事情是搭建账号登录界面&#xff0c;输入账号及密码存储到本地数据库&#xff0c;本地数据库数据是否可登陆游戏进入游戏场景&#xff0c;如果没有账号可以通过账号注册来进入游戏&#xff0c;之后每次账号输入使用注…

项目日志——框架模块设计实用工具类的设计、实现、测试

文章目录 框架模块设计功能叙述模块划分模块关系图 实用工具类设计实现测试 框架模块设计 功能叙述 日志系统的作用就是将一条消息格式化指定格式的字符串之后&#xff0c;写入到指定位置 这个指定位置就有说法了 标准输出指定文件滚动文件 我们可以写入到其中的一种&…

半天攻略:用ChatGPT快速搞定高质量论文,从选题到完稿一站式指南!

在学术论文的撰写过程中&#xff0c;ChatGPT可以作为一个强大的辅助工具&#xff0c;帮助完成从确定主题到整理参考文献的各个环节。接下来&#xff0c;我们将详细介绍如何利用ChatGPT提升论文写作的效率和质量。 确定论文主题 初步探索&#xff1a;通过ChatGPT探索主题&#…

UAEXpert连接kepserver的OPC服务时,出现BadCertificateHostNamelnvalid报错--解决办法

描述&#xff1a; 虚拟机win10安装kepserver&#xff0c;本机的uaexpert软件连接虚拟机上的OPC UA服务&#xff0c;遇到BadCertificateHostNamelnvalid报错问题 报错信息如下&#xff1a; Error BadCertificateHostNamelnvalidwas returned during CreateSession,press Ignor…

Spring事务和事务传播机制(下)

我们上一篇文章学习了 Transactional 的基本使用。接下来我们学习 Transactional 注解的使用细节。 Transactional 注解当中有下面三个常见属性&#xff1a; 1、rollbackFor&#xff1a;异常回滚属性。指定能够触发事务回滚的异常类型。可以指定多个异常类型 2、IsoIation&…

开学季好物狂欢,这些神仙好物让你开学季事半功倍!

随着秋风送爽&#xff0c;开学季再次悄然而至。对于即将迎接新学期的学生们来说&#xff0c;这不仅仅是一个新起点&#xff0c;也是准备全新装备、挑战更高学习效率的好时机。在这个特殊的时节&#xff0c;我们特别为大家策划了一场“开学季好物狂欢”&#xff0c;精选了一系列…

数字人直播防封技巧升级!头部源码厂商如何实现7*24小时无间断直播?

当前&#xff0c;许多用户在使用数字人直播的过程中都遇到了直播间违规和账号被封两大问题&#xff0c;并因此蒙受了一定的损失。在此背景下&#xff0c;不少有计划引入数字人直播的企业和搭建数字人直播系统的创业者也开始有了犹豫。为了让大家能够更放心地入局&#xff0c;本…

Linux之MySQL日志

前言 数据库就像一个庞大的图书馆&#xff0c;而日志则是记录这个图书馆内每一本书的目录。正如在图书馆中找到特定书籍一样&#xff0c;数据库日志帮助我们追溯数据的变更、定位问题和还原状态。 在MySQL中&#xff0c;日志是非常重要的一个组成部分&#xff0c;它记录了数据…

创客匠人对话:如何让客户主动为你付费?北大教授发售秘籍大公开

老蒋创客圈第65期对话标杆直播连麦&#xff0c;我们邀请到【YD世界人才创造社】平台创始人白钰玮老师。为我们分享“家庭教育赛道如何创新模式&#xff0c;单场发售实现高创收&#xff1f;”&#xff0c;深度剖析如何去提升自己的核心竞争力&#xff1f;如何提升个人影响力&…

引领AI PC浪潮,Arm人工智能创新应用大赛火热报名中

AI PC&#xff0c;即搭载人工智能技术的个人电脑&#xff0c;正成为个人电脑市场的新宠儿。而正在如火如荼进行中的 Arm人工智能创新应用大赛&#xff0c;则为敏锐的开发者探索 AI PC 应用开发掘金之路提供了平台。 点击报名 挑战10万奖金池 AI PC 增长强劲&#xff0c;年出货…

2024跨境旺季营销:多渠道广告覆盖中,哪些平台是首选?

跨境电商的旺季即将来临&#xff0c;对于卖家们来说&#xff0c;如何进行有效的营销推广至关重要。在多渠道广告覆盖的策略下&#xff0c;选择合适的平台成为关键。那么&#xff0c;哪些平台是跨境旺季营销的首选呢&#xff1f; 一、社交媒体平台 1、Instagram 以图片和短视频…

易保全出席人工智能应用场景高峰论坛,发布AI-数据资产管理平台2.0应用成果

2024年9月5日&#xff0c;由上海合作组织国家多功能经贸平台、重庆市科技发展基金会指导&#xff0c;重庆市渝中区商务委员会等相关部门主办、华智未来(重庆)科技有限公司承办&#xff0c;重庆民营经济国际合作商会协办的“智驭未来创想无界人工智能应用场景高峰论坛暨成果发布…

使用 nuxi init 创建全新 Nuxt 项目

title: 使用 nuxi init 创建全新 Nuxt 项目 date: 2024/9/6 updated: 2024/9/6 author: cmdragon excerpt: 摘要:本文介绍了如何使用nuxi init命令创建全新的Nuxt.js项目,包括安装所需环境、命令使用方法、指定模板、强制克隆、启动开发服务器等步骤,并提供了完整的项目初…

DAY87 APP 攻防-安卓逆向篇Smail 语法反编译签名重打包Activity 周期Hook 模块

1、APK 逆向-数据修改-结构&格式 2、APK 逆向-逻辑修改-Smail 语法 3、APK 逆向-视图修改-Activity&Xml #章节点&#xff1a; 1、APP 资产-内在提取&外在抓包 2、APP 逆向-反编译&删验证&重打包 3、APP 安全-存储&服务&组件&注册等 演示案例&a…

RasberryPi 3B树莓派基本配置

RaspberryPi 3B树莓派基本配置 文章目录 RaspberryPi 3B树莓派基本配置一、准备工作1.1 硬件准备&#xff1a;1.1.1 树莓派和电源适配器&#xff1a;1.1.2 USB转TTL模块&#xff1a;1.1.3 读卡器和TF卡&#xff1a; 1.2 软件准备&#xff1a;1.2.1 下载 Raspberry Pi OS&#x…

SpringMvc后续3

返回值问题 ModelAndView返回 字符串返回 转发和重定向 默认返回页面是转发效果 如果需要重定向&#xff0c;在返回页面的时候&#xff0c;追加redirect:&#xff0c;后边需要追加视图后缀 Ajax返回 控制层 jsp文件 导入json包 Session问题

案例-上海某科技公司:监控易7.0重塑服务器监控模式

在上海这座充满创新与活力的城市中&#xff0c;科技型企业如雨后春笋般涌现&#xff0c;而上海某科技发展有限公司&#xff08;以下简称“该公司”&#xff09;便是其中的佼佼者。随着业务的蓬勃发展和IT环境的日益复杂&#xff0c;服务器作为业务运行的核心&#xff0c;其稳定…