SpringBoot中的Redis的简单使用

在Spring Boot项目中使用Redis作为缓存、会话存储或分布式锁等组件,可以简化开发流程并充分利用Redis的高性能特性。以下是使用Spring Boot整合Redis的详细步骤:

1. 环境准备

确保开发环境中已安装:

  • Java:用于编写和运行Spring Boot应用。
  • MavenGradle:作为构建工具,管理项目依赖。
  • Redis服务器:安装并启动Redis服务,确保其在本地或远程服务器上运行正常。

2. 创建Spring Boot项目

使用Spring Initializr创建新项目,选择所需的依赖,如Web(如果你打算开发Web应用)和Redis。在依赖选项中选择Spring Data Redis或直接添加spring-boot-starter-data-redis起步依赖。

3. 添加Redis依赖

在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加相应的Redis依赖。对于Maven,添加如下依赖:

1<dependencies>
2    <dependency>
3        <groupId>org.springframework.boot</groupId>
4        <artifactId>spring-boot-starter-data-redis</artifactId>
5    </dependency>
6</dependencies>

对于Gradle,添加如下依赖:

1dependencies {
2    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
3}

4. 配置Redis

在项目的application.propertiesapplication.yml配置文件中添加Redis服务器的相关配置,通常包括以下属性:

1# application.properties
2spring.redis.host=localhost
3spring.redis.port=6379
4spring.redis.password=your_password (如果Redis设置了密码)
5spring.redis.database=0 (默认为0,根据需要指定数据库编号)
6spring.redis.timeout=6000ms (可选,连接超时时间)

或者 YAML 格式:

1# application.yml
2spring:
3  redis:
4    host: localhost
5    port: 6379
6    password: your_password
7    database: 0
8    timeout: 6000ms

5. 配置类(可选)

Spring Boot自动配置提供了RedisTemplateStringRedisTemplate,可以直接注入使用。如有需要,可以自定义RedisConfig类以进一步配置Redis连接工厂、序列化器等。例如:

1@Configuration
2public class RedisConfig {
3
4    @Bean
5    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
6        RedisTemplate<String, Object> template = new RedisTemplate<>();
7        template.setConnectionFactory(factory);
8
9        // 设置序列化策略(如Jackson、Kryo等)
10        // ... 
11
12        return template;
13    }
14}

6. 使用RedisTemplate进行操作

在业务代码中,可以通过@Autowired注入RedisTemplateStringRedisTemplate,然后使用其提供的API进行操作。例如,获取、设置、删除键值对:

1@Autowired
2private StringRedisTemplate stringRedisTemplate;
3
4public void set(String key, String value) {
5    stringRedisTemplate.opsForValue().set(key, value);
6}
7
8public String get(String key) {
9    return stringRedisTemplate.opsForValue().get(key);
10}
11
12public void delete(String key) {
13    stringRedisTemplate.delete(key);
14}

7. 封装Redis工具类(可选)

为了提高代码复用性和简洁性,可以创建一个封装了常用Redis操作的工具类,如RedisUtil,并添加@Component注解使其成为Spring管理的bean。这样,业务代码可以通过注入RedisUtil来使用封装好的方法。

8. 测试与监控

编写单元测试验证Redis操作的正确性。可以使用@SpringBootTest注解启动整个Spring Boot上下文进行集成测试。同时,考虑使用Redis可视化管理工具(如Redis Desktop Manager、RedisInsight等)监控Redis数据和性能。

9. 高级功能

根据项目需求,还可以利用Spring Data Redis提供的更多高级功能,如:

  • 使用RedisTemplate执行更复杂的Lua脚本。
  • 利用RedisTemplate.opsForHash()进行哈希操作。
  • 使用RedisTemplate.opsForList()opsForSet()opsForZSet()进行列表、集合、有序集合操作。
  • 实现分布式锁,如使用Redisson库或基于Redlock算法的手动实现。
  • 集成Spring Session,实现基于Redis的会话共享。

按照以上步骤,可以在Spring Boot项目中成功整合Redis并进行相关简单操作。

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

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

相关文章

微服务-6 Gateway网关

一、网关搭建 此时浏览器访问 localhost:10010/user/list 后正常返回数据&#xff0c;说明网关已生效&#xff0c;其原理流程图如下&#xff1a; 二、网关过滤器 作用&#xff1a;处理一切进入网关的请求和微服务响应。 1. 网关过滤器的分类&#xff1a; a. 某个路由的过滤器 …

LeetCode Meditations:合并 K 排序列表

描述 合并K分类列表 状态&#xff1a; 您有一系列 k 链接-列表 lists &#xff0c;每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如&#xff1a; Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanatio…

地理信息系统(ArcGIS)在水文水资源、水环境中的应用

刘老师&#xff08;副教授&#xff09;&#xff1a;来自北京重点高校资深专家&#xff0c;长期从事水资源与水环境、流域污染控制与管理、非点源模拟与控制、环境信息系统开发、环境遥感与GIS应用等领域的研究&#xff0c;发表多篇Sci论文、具有资深的技术底蕴和专业背景。 1、…

MapTracker:Tracking with Strided Memory Fusion for Consistent Vector HD Mapping

参考代码&#xff1a;MapTracker 动机与出发点 为了提升帧间检测的稳定性通常会添加时许信息&#xff0c;这个可以BEV特征处做时序融合&#xff0c;也可以是用当前帧query去cross-attn历史帧信息&#xff0c;则更多的时候是将之前帧信息与当前做融合或者cross-attn实现信息传…

SQL注入sqli_labs靶场第三题

?id1and 11 and 11和?id1and 11 and 11进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询&#xff1a; 猜解列名 ?id1) order by 3-…

SIC知识--(1):来龙去脉

一、碳化硅的起源 1891年&#xff0c;当时爱德华古德里奇艾奇逊在尝试制造人造金刚石的过程中意外发现了这一材料。艾奇逊将黏土&#xff08;铝硅酸盐&#xff09;与粉状焦炭&#xff08;碳&#xff09;混合后在电炉中加热&#xff0c;预期得到金刚石&#xff0c;却意外获得了一…

代码随想录35期Day08-字符串

344.反转字符串 位运算 func reverseString(s []byte) {l : 0r : len(s) - 1for l < r {s[l] ^ s[r]s[r] ^ s[l]s[l] ^ s[r]lr--} }541. 反转字符串II 没技巧 func reverseStringRange(s []byte, l int, r int) {if r > len(s) {r len(s) - 1}for l < r {s[l] ^…

Mac安装配置ElasticSearch和Kibana 8.13.2

系统环境&#xff1a;Mac M1 (MacOS Sonoma 14.3.1) 一、准备 从Elasticsearch&#xff1a;官方分布式搜索和分析引擎 | Elastic上下载ElasticSearch和Kibana 笔者下载的是 elasticsearch-8.13.2-darwin-aarch64.tar.gz kibana-8.13.2-darwin-aarch64.tar.gz 并放置到个人…

关于ASP.NET Core WebSocket实现集群的思考

前言 提到WebSocket相信大家都听说过&#xff0c;它的初衷是为了解决客户端浏览器与服务端进行双向通信&#xff0c;是在单个TCP连接上进行全双工通讯的协议。在没有WebSocket之前只能通过浏览器到服务端的请求应答模式比如轮询&#xff0c;来实现服务端的变更响应到客户端&…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现

0x01 产品简介 水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。由山东潍微科技股份有限公司研发,近年来,公司全力拓展提升水务、水利信息化业务…

机器学习实训 Day1

线性回归练习 Day1 手搓线性回归 随机初始数据 import numpy as np x np.array([56, 72, 69, 88, 102, 86, 76, 79, 94, 74]) y np.array([92, 102, 86, 110, 130, 99, 96, 102, 105, 92])from matplotlib import pyplot as plt # 内嵌显示 %matplotlib inlineplt.scatter…

专为苹果系统设计的精美可视化图表 | 开源日报 No.219

danielgindi/Charts Stars: 27.3k License: Apache-2.0 Charts 是为 iOS/tvOS/OSX 提供美观图表的开源项目&#xff0c;是跨平台 MPAndroidChart 在苹果设备上的实现。该项目提供了以下主要功能和优势&#xff1a; 支持 iOS、tvOS 和 macOS 平台使用 Swift 编写&#xff0c;可…

Harmony鸿蒙南向驱动开发-PWM

PWM&#xff08;Pulse Width Modulation&#xff09;即脉冲宽度调制&#xff0c;是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术&#xff0c;广泛应用在从测量、通信到功率控制与变换的许多领域中。通常情况下&#xff0c;在使用马达控制、背光亮度调节时会用到PWM模…

数据降维方法-主成分分析(PCA)

目录 一、前言 二、向量的表示及基变换 三、基变换 四、协方差矩阵 五、协方差 六、优化目标 一、前言 主成分分析(Principal Component Analysis) 用途&#xff1a;降维中的常用手段 目标&#xff1a;提取最有价值的信息&#xff08;基于方差&#xff09; 问题&#x…

Acwing.4009 收集卡牌(期望dp)

题目 小林在玩一个抽卡游戏&#xff0c;其中有 n种不同的卡牌&#xff0c;编号为 1到 n。 每一次抽卡&#xff0c;她获得第 i种卡牌的概率为 pi。 如果这张卡牌之前已经获得过了&#xff0c;就会转化为一枚硬币。 可以用 k枚硬币交换一张没有获得过的卡。 小林会一直抽卡&…

最祥解决python 将Dataframe格式数据上传数据库所碰到的问题

碰到的问题 上传Datafrane格式的数据到数据库 会碰见很多错误 举几个很普遍遇到的问题(主要以SqlServer举例) 这里解释下 将截断字符串或二进制数据 这个是字符长度超过数据库设置的长度 然后还有字符转int失败 或者字符串转换日期/或时间失败 这个是碰到的需要解决的最多的问…

网站HTTP升级成为HTTPS的方法

将网站从HTTP免费升级为HTTPS&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; - 为了免费升级&#xff0c;您可以选择使用JoySSL这样的公益项目。JoySSL提供免费、自动化的SSL/TLS证书颁发服务&#xff0c;适用于各…

三、Mat、Bitmap和Image数据类型之间的转换(OpenCvSharp)

在OpenCV中可以通过ImRead方法读取照片&#xff0c;通过ImShow方法显示照片&#xff1b;但是无法在PictureBox控件中显示 PictureBox控件只能展示Bitmap和Image数据类型图片 为此查阅了网上很多篇博文&#xff0c;将三种数据类型之间的转换进行了归纳整理&#xff0c;感谢网上…

【Qt】:对话框(一)

对话框 一.基本的对话框二.自定义对话框三.通过图形化界面自定义对话框四.关于对话框mode 对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口&#xff0c;出现在程序最上层&#xff0c;用于实现短期任务或者…

【mT5多语言翻译】之一——实战项目总览

[1] 总览 【mT5多语言翻译】系列共六篇文章&#xff1a; 【mT5多语言翻译】之一——实战项目总览   【mT5多语言翻译】之二——模型&#xff1a;T5模型与mT5模型与前置知识   【mT5多语言翻译】之三——数据集&#xff1a;多语言翻译数据集与预处理   【mT5多语言翻译】之…