【SpringBoot】使用Redis

目录

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: localhostport: 6379password:
#        使用的Redis数据库索引,这里是0,表示使用默认数据库。database: 0lettuce: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 在拦截器之前被正确创建和注入@Autowiredprivate MyInterceptor myInterceptor;@Overridepublic 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类型,可以存储和检索各种类型的数据,包括字符串、对象、集合等。但是,它提供了一些额外的功能,如键的过期时间、哈希表操作、列表操作等。*/@Autowiredprivate RedisTemplate<String,Object> redisTemplate;/*** 在请求处理之后,视图渲染之前执行,用于进行资源清理*/@Overridepublic 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.rhkb.cn/news/417396.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

负载均衡调度器--LVS

文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR模式的特点: TUN模式 LVS调度算法LVS相关软件ipvsadm 命令管理集群服务&#xff1a;增、改、删管理集群上的RS:增、改、删 创建集群 LV…

如何修复软件中的BUG

笔者上一篇博文《如何开发出一款优秀的软件》主要讲了如何开发一款优秀的软件及相应的必要条件。但对一个已上线&#xff0c;已经成型的产品&#xff0c;该如何解决存在的bug呢&#xff1f;这是本文要阐述的内容。 在这里&#xff0c;首先说一下bug的种类及bug严重程度分类&…

微信小程序认证和备案

小程序备案的流程一般包括以下步骤‌&#xff1a; 准备备案所需材料‌&#xff1a;通常需要提供‌营业执照、法人的‌身份证、两个‌手机号和一个邮箱等资料。 ‌1 ‌登录‌微信公众平台‌&#xff1a;作为第一次开发微信小程序的服务商&#xff0c;需要通过微信公众平台申请…

AAC高级音频编码技术

一、什么是AAC AAC的中文名称是高级音频编码技术&#xff0c;它是基于MPEG-2的一种全新的音频编码技术。随着时代的发展&#xff0c;目前AAC的技术升级到MPEG-4表准。AAC广泛的应用在网络传输、高清录制等领域&#xff0c;而AAC技术的出现就是为了取代之前的MP3格式。 二、为什…

酒店网站管理系统前后台完整源码

酒店网站管理系统前后台完整源码&#xff0c;架构是javasshmysql。 系统基于SSH框架&#xff0c;数据库用的mysql。系统分为前台网站部分&#xff0c;和后台管理部分。 注意&#xff0c;不是php代码&#xff0c;是java代码&#xff0c;使用者需要懂java才行。仅供懂java的人学…

如何提升网站的收录率?

要提升网站的收录率&#xff0c;其中一个特别有效的工具就是GPC爬虫池&#xff0c;这个工具通过深度研究谷歌SEO算法&#xff0c;吸引谷歌爬虫。 GPC爬虫池的基本原理是构建一个庞大的站群系统&#xff0c;并创建复杂的内链和外链结构&#xff0c;以吸引并留住谷歌蜘蛛 使用GP…

跟着李沐学ai

01 课程安排【动手学深度学习v2】-跟李沐学AI-【完结】动手学深度学习 PyTorch版-哔哩哔哩视频 (bilibili.com)https://www.bilibili.com/list/1567748478?sid358497&spm_id_from333.999.0.0&desc1&oid714717789&bvidBV1oX4y137bC 目标 介绍深度学习经典和最…

大白话说什么是“MLLM”多模态大语言模型

1. 什么是MLLM多模态大语言模型 1.1 先来思考一个问题 如果上传了一张图片&#xff0c;并向大模型提问。“图片中绿色框框中的人是谁&#xff1f;” 大模型回答&#xff1a;“那是波多野吉衣老师” 请问&#xff0c;大模型是怎么做到的&#xff1f; 我们用常规的思路来想一…

使用 MongoDB 构建 AI:Patronus 如何自动进行大语言模型评估来增强对生成式 AI 的信心

大语言模型可能不可靠&#xff0c;这几乎算不上头条新闻。对于某些用例&#xff0c;这可能会带来不便。而对于其他行业&#xff0c;尤其是受监管行业&#xff0c;后果则要严重得多。于是&#xff0c;业内首个大语言模型自动评估平台 Patronus AI 应运而生。 Patronus AI 由 Met…

SPIRNGBOOT+VUE实现浏览器播放音频流并合成音频

一、语音合成支持流式返回&#xff0c;通过WS可以实时拿到音频流&#xff0c;那么我们如何在VUE项目中实现合成功能呢。语音合成应用非常广泛&#xff0c;如商家广告合成、驾校声音合成、新闻播报、在线听书等等场景都会用到语音合成。 二、VUE下实现合成并使用浏览器播放代码…

山东大学机试试题合集

&#x1f370;&#x1f370;&#x1f370;高分篇已经涵盖了绝大多数的机试考点&#xff0c;由于临近预推免&#xff0c;各校的机试蜂拥而至&#xff0c;我们接下来先更一些各高校机试题合集&#xff0c;算是对前边学习成果的深入学习&#xff0c;也是对我们代码能力的锻炼。加油…

Faceware面部动作捕捉系统,为虚拟角色赋予真实可信的面部动画

在数字娱乐产业日新月异的今天&#xff0c;虚拟角色的真实性和可信度成为了衡量作品质量的重要标准之一。Faceware面部动作捕捉系统是这一领域中的佼佼者&#xff0c;它以先进的技术和卓越的性能&#xff0c;为虚拟角色创造了生动、自然的面部表情&#xff0c;极大地提升了观众…

RK3588 系列之3—rknn使用过程中遇到的bug

RK3588 系列之3—rknn使用过程中遇到的bug 1.librockchip_mpp.so: file format not recognized&#xff1b; treating as linker scrip2.Could not find a package configuration file provided by "OpenCV" with any of the following names参考文献 1.librockchip_…

原点安全荣获“AutoSec Awards 安全之星”优秀汽车数据安全合规方案奖

9月3日&#xff0c;「AutoSec 2024第八届中国汽车网络安全周暨第五届智能汽车数据安全展」在上海盛大开幕。本届大会由谈思实验室和谈思汽车主办、上海市车联网协会联合主办&#xff0c;以汽车“网络数据安全、软件安全、功能安全”为主题&#xff0c;汇聚了国内外的技术专家、…

生信机器学习入门4 - scikit-learn训练逻辑回归(LR)模型和支持向量机(SVM)模型

通过逻辑回归&#xff08;logistic regression&#xff09;建立分类模型 1.1 逻辑回归可视化和条件概率 激活函数 (activation function)&#xff1a; 一种函数&#xff08;如 ReLU 或 S 型函数&#xff09;&#xff0c;用于对上一层的所有输入进行求加权和&#xff0c;然后生…

MFC工控项目实例之九选择下拉菜单主界面文本框显示菜单名

承接专栏《MFC工控项目实例之八选择下拉菜单添加打钩图标》 1、在主界面添加一个组合框和一个静态文本框。 2、在SEAL_PRESSUREDlg.cpp文件中添加代码 BOOL CSEAL_PRESSUREDlg::OnInitDialog() {CDialog::OnInitDialog(); ... GetDlgItem(IDC_STATIC_TYPNAME)->SetFont(&a…

如何实现一个定时任务?六种策略可实现

目录标题 1、自定义单线程2、JDK ScheduledExecutorService3、 Spring Task4、Quartz5、Elastic-job6、xxl-job最后&#xff1a;思考更上一层1. 高性能2. 高并发3. 高可用 设计方案 1、自定义单线程 上图中&#xff0c;我们启动一个线程&#xff0c;该线程无限循环执行&#xf…

文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和例子 C语言

前言 在日常应用中&#xff0c;我们为了持续的使用一些数据&#xff0c;为了让数据可以在程序退出后可以保存并正常使用&#xff0c;引入了文件的概念和操作。本文分享了一些常用的文件操作函数的使用方法和各自的区别。 一、常用文件顺序读写函数 下面例程所使用的VS工程代码…

链表算法题(下)

在链表算法题&#xff08;上&#xff09;长中我们已经学习了一系列的链表算法题&#xff0c;那么在本篇中我们将继续来学习链表的算法题&#xff0c;接下来就继续来破解链表的算法题吧&#xff01; 1.相交链表 160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 通过以上…

mysql开启远程访问

个人建议mysql可以用宝塔自动下载安装。 远程访问&#xff0c; 1.关闭防火墙&#xff0c;确保ip能ping通 2.ping端口确定数据库能ping通 3.本地先连上去命令行修改远程访问权限。 mysql -u root -p use mysql; select user,host from user; select host from user where u…