自学网站有哪些自学网关键词优化公司排名
news/
2025/9/22 17:16:40/
文章来源:
自学网站有哪些自学网,关键词优化公司排名,wordpress首页如何调用最新文章评论标签云文章分类等代码,最好的看vr影片的设备前言
当你的应用程序需要一个快速、可扩展的内存数据库时#xff0c;Redis是一个非常流行的选择。通过将Redis与Spring Boot集成#xff0c;你可以轻松地利用Redis的功能#xff0c;例如缓存、会话存储和消息队列等#xff0c;从而提升应用程序的性能和可伸缩性。
在本教…前言
当你的应用程序需要一个快速、可扩展的内存数据库时Redis是一个非常流行的选择。通过将Redis与Spring Boot集成你可以轻松地利用Redis的功能例如缓存、会话存储和消息队列等从而提升应用程序的性能和可伸缩性。
在本教程中我们将深入探讨如何在Spring Boot项目中整合Redis。我们将学习如何配置Redis连接、使用Spring Data Redis来进行数据访问操作以及如何利用Redis作为缓存来提高应用程序的效率。无论你是刚刚接触Spring Boot还是已经有一定经验这篇教程都将为你展示如何利用Redis为你的应用程序增添强大的功能。
通过本教程的学习你将对Spring Boot与Redis的整合有一个清晰的理解并能够在实际项目中应用这些知识。让我们一起开始探索Spring Boot与Redis这个强大组合带来的无限可能吧 一、前期准备
1、新建项目结构如下 2、导入依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- 使用 jackson 序列化器需要依赖JACKSON包 --dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource11/sourcetarget11/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClassedu.nf.ch09.Ch09Application/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build 这段代码是一个基于Spring Boot的项目的pom.xml文件其中包含了该项目的依赖管理和构建配置。 依赖 spring-boot-starter-data-redis这是Spring Boot提供的用于集成Redis的starter可以方便地进行Redis数据库访问。jackson-databind这是Jackson库的核心依赖用于实现Java对象与JSON之间的序列化和反序列化操作。spring-boot-starter-test这是Spring Boot提供的用于单元测试的starter包含了常用的测试框架和工具。lombok这是一个Java库用于简化Java代码的编写。它提供了一些注解如Data、Getter、Setter等可以自动生成getter、setter方法等。 依赖管理 spring-boot-dependencies这是Spring Boot提供的依赖管理BOMBill of Materials文件用于管理项目中使用的Spring Boot相关依赖的版本。 构建配置 maven-compiler-plugin这是Maven的编译插件用于配置项目的编译选项。在这里设置了Java的源码版本和目标版本为11并指定了编码格式为UTF-8。spring-boot-maven-plugin这是Spring Boot的Maven插件用于支持将Spring Boot应用程序打包成可执行的JAR文件。在这里配置了主类的名称和打包方式为repackage。 通过以上的配置可以管理项目的依赖关系并使用Maven进行项目的构建和打包操作。同时该项目还集成了Spring Boot、Redis和Lombok等技术以便开发和测试Spring Boot应用程序。 二、配置 RedisConfig 配置类 Configuration
public class RedisConfig {/*** 自定义 RedisTemplate* param connectionFactory* return*/Beanpublic RedisTemplateString,Object redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplateString,Object template new RedisTemplate();template.setConnectionFactory(connectionFactory);// 设置 key 的序列化器template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());// 设置 value 的序列化器template.setValueSerializer(RedisSerializer.json());template.setHashValueSerializer(RedisSerializer.json());return template;}}这段代码是一个自定义RedisTemplate的配置类。在Spring Boot中可以通过自定义配置类来创建和配置自定义的Bean。 首先使用Configuration注解标识该类是一个配置类Spring Boot会在启动时加载并应用该配置。 然后在redisTemplate()方法上使用Bean注解表示将该方法返回的对象注册为一个Bean并由Spring容器进行管理。 在redisTemplate()方法中通过参数RedisConnectionFactory获取到Redis连接工厂作为创建RedisTemplate的参数。 接着创建一个RedisTemplate对象并将连接工厂设置为其连接工厂。 然后通过调用setKeySerializer()和setValueSerializer()方法分别设置key和value的序列化器。在这里使用了RedisSerializer的静态方法string()和json()来获取String和JSON的序列化器。 最后返回创建的RedisTemplate对象。 通过自定义RedisConfig类可以创建一个自定义的RedisTemplate并对其进行相关配置例如设置序列化器等。在其他需要使用RedisTemplate的地方可以直接注入该Bean来进行操作。 需要注意的是为了让Spring Boot能够正确识别和加载自定义RedisTemplate需要将RedisConfig类所在的包路径包含在ComponentScan或SpringBootApplication注解中。或者将RedisConfig类放在主配置类如Application类所在的子包下这样可以自动扫描到该配置类。 三、配置 yml
spring:# 配置 redis 配置redis:# 指定使用第几个数据库database: 0# 主机地址host: 127.0.0.1# 端口号port: 6379# 指定超时时间timeout: 2000 这段配置是用来配置Spring Boot应用程序连接Redis的相关参数。 在配置文件中以spring.redis为前缀可以设置以下参数 database指定要使用的Redis数据库默认为0。如果应用程序需要访问多个数据库可以通过修改此值来切换数据库。 host指定Redis服务器的主机地址。在这里设置为127.0.0.1表示本地主机。 port指定Redis服务器的端口号。默认情况下Redis服务器使用6379作为默认端口。 timeout指定连接到Redis服务器的超时时间单位为毫秒。如果连接在指定的时间内没有响应将会抛出连接超时异常。 通过在配置文件中设置这些参数应用程序将会使用指定的主机地址、端口号和超时时间来连接到Redis服务器。这样在应用程序中就可以直接使用自动装配的RedisTemplate进行操作。 需要注意的是配置文件的格式可能会根据不同的配置方式而有所差异。上述示例是使用YAML格式的配置文件如果你使用的是其他格式的配置文件可能需要做相应的调整。 四、新建一个 User 实体类 Data
AllArgsConstructor
NoArgsConstructor
public class User implements Serializable {private Integer id;private String userName;}这段代码定义了一个User类该类具有以下特点 使用了Data注解它是Lombok库提供的一个注解用于自动生成getter、setter、toString、equals、hashCode等常用方法。 使用了AllArgsConstructor注解它是Lombok库提供的一个注解用于生成一个包含所有参数的构造函数。 使用了NoArgsConstructor注解它是Lombok库提供的一个注解用于生成一个无参构造函数。 实现了Serializable接口表示该类可以在网络中进行传输或在磁盘上进行存储这通常用于对象的序列化和反序列化操作。 该User类有两个属性 id表示用户的ID类型为Integer。 userName表示用户名类型为String。 通过使用Lombok库提供的注解可以简化Java类的编写自动生成常用的方法和构造函数减少了冗余的代码。同时实现Serializable接口可以让User类的对象在不同的环境中进行传输和持久化存储。 五、操作 redis
1、返回 String Service
RequiredArgsConstructor
public class UserService {/*** 默认装配的是 StringRedisTemplate 用于操作字符串*/private final StringRedisTemplate template;/*** key 的前缀*/private final static String PREFIX user:;/*** 返回 String* param id* return*/public String getUser(Integer id){if (!template.hasKey(PREFIX id)){// 保存到 Redistemplate.opsForValue().set(PREFIX id,user1);// 设置过期时间template.expire(PREFIX id,1800, TimeUnit.MINUTES);}return template.opsForValue().get(PREFIX id);}}这段代码定义了一个名为UserService的服务类其中包含以下方法 getUser(Integer id)该方法接受一个参数id表示要获取用户信息的ID。如果Redis中存在该用户的信息则直接从Redis中获取并返回否则将用户信息保存到Redis中并设置过期时间为30分钟最后再返回用户信息。 在该服务类中使用了Service注解表示将该类标记为一个服务类并由Spring容器进行管理。 在构造函数上使用了RequiredArgsConstructor注解它是Lombok库提供的一个注解用于生成一个包含所有final成员变量的构造函数并自动进行依赖注入。在这里使用了StringRedisTemplate类的实例作为依赖注入的参数表示将其注入到UserService类中。 在getUser()方法中首先判断Redis中是否存在指定的key如果不存在则将用户信息保存到Redis中并设置过期时间为30分钟。最后从Redis中获取用户信息并返回。 通过将业务逻辑封装在服务类中可以使得业务逻辑与具体的实现细节解耦方便进行单元测试和维护。同时使用StringRedisTemplate类来操作Redis可以简化对Redis的操作提高开发效率。 2、返回一个对象
Service
RequiredArgsConstructor
public class UserService {private final RedisTemplateString, Object template;/*** key 的前缀*/private final static String PREFIX user:;/*** 返回 对象* param id* return*/public User getUser(Integer id){if (!template.hasKey(PREFIX id)){User user new User(id,qiu);// 保存到 Redistemplate.opsForValue().set(PREFIX id,user);// 设置过期时间template.expire(PREFIX id,1800, TimeUnit.SECONDS);}return (User) template.opsForValue().get(PREFIX id);}}解释如下 Service注解表示这是一个Spring的服务组件用于处理业务逻辑。RequiredArgsConstructor注解是Lombok库提供的注解用于生成带有必需参数的构造函数。RedisTemplateString, Object是一个用于操作Redis的模板类其中String表示Redis的key的类型Object表示Redis的value的类型。PREFIX是一个常量用于设置Redis中存储用户对象的key的前缀。getUser()方法用于获取用户对象。首先它会检查Redis中是否存在指定key如果不存在则创建一个新的User对象并将其保存到Redis中。同时还设置了该key的过期时间为1800秒。最后通过模板类的opsForValue().get()方法从Redis中获取用户对象并返回。 通过使用这个UserService类你可以在获取用户对象时先尝试从Redis缓存中获取如果缓存中不存在则去数据库中查询并将结果存入Redis缓存以提高查询性能和减轻数据库负载。 3、测试
1返回字符串 Testvoid contextLoads() {String user service.getUser(1000);log.info(user);}运行结果 2返回对象 Testvoid contextLoads() {User user service.getUser(2);log.info(user.getUserName());}运行结果 六、SpringBoot 整合 Redis 的好处
Spring Boot 整合 Redis 有以下几个好处 缓存支持Redis 是一种高性能的缓存数据库通过将数据存储在 Redis 中可以大大提高系统的读取性能。Spring Boot 提供了对 Redis 的无缝集成可以方便地使用 Redis 作为缓存存储。 分布式锁支持在分布式系统中为了保证数据的一致性和避免并发冲突常常需要使用分布式锁。Redis 提供了原子操作和特定数据结构如 Redisson来实现分布式锁。通过 Spring Boot 整合 Redis可以方便地使用 Redis 实现分布式锁确保多个节点之间的数据访问的互斥性。 会话管理支持在 Web 应用程序中会话管理是非常重要的功能。通过 Spring Session 和 Redis 结合使用可以将会话数据存储在 Redis 中实现分布式环境下的会话共享提高系统的可伸缩性和稳定性。 发布/订阅支持Redis 提供了发布/订阅模式可以实现消息的广播和订阅。通过 Spring Boot 整合 Redis可以方便地使用 Redis 的发布/订阅功能实现消息的异步通信和事件驱动。 数据持久化支持除了作为缓存数据库Redis 还可以作为持久化存储数据库使用。通过 Spring Boot 整合 Redis可以方便地将数据持久化到 Redis 中并进行读取和查询。
综上所述Spring Boot 整合 Redis 可以提供缓存支持、分布式锁支持、会话管理支持、发布/订阅支持和数据持久化支持增强了系统的性能、可伸缩性和稳定性使开发人员可以更方便地利用 Redis 提供的功能和特性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909773.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!