【Redis | 第三篇】Springboot整合Redis

文章目录

3.Springboot整合Redis

3.1Spring Data Redis介绍

Spring Data Redis 是 Spring Framework 提供的一个用于简化 Redis 数据库的访问和操作的模块。它为开发人员提供了一种简洁而强大的方式来与 Redis 进行交互,无需编写大量的样板代码。

Spring Data Redis 提供了以下核心功能:

  1. RedisTemplate:该类是 Spring Data Redis 的主要接口之一,它提供了访问 Redis 的基本操作方法,如读取、写入、删除数据以及对数据进行序列化和反序列化等。RedisTemplate 可以处理多种类型的数据,如字符串、哈希、列表、集合和有序集合等。
  2. RedisRepository:该接口是 Spring Data Redis 的另一个重要组件,它提供了一组通用的 CRUD 操作和查询方法,让开发人员能够轻松地进行数据访问和操作。开发人员只需定义一个接口,继承自 RedisRepository,并按照约定命名方法,Spring Data Redis 就会为其生成相应的实现类。
  3. 注解支持:Spring Data Redis 提供了一系列注解,如 @RedisHash、@Indexed、@Expire 和 @EnableRedisRepositories 等,用于简化对象到 Redis 数据的映射以及查询操作的配置。
  4. 事务支持:Spring Data Redis 集成了 Spring Framework 的事务管理机制,使得开发人员可以通过声明式事务的方式来控制 Redis 数据库的事务操作。
  5. 缓存支持:Spring Data Redis 与 Spring Framework 的缓存机制无缝集成,可以将 Redis 作为缓存存储介质,并提供了简单的注解配置方式注解式的缓存配置。

Spring Data Redis 大大简化了与 Redis 数据库的交互过程,可以减少样板代码的编写和维护成本,提高开发效率。同时,Spring Data Redis 还提供了丰富的特性和灵活的扩展机制,可以根据实际需求进行定制和扩展。无论是在简单的键值存储场景下,还是在复杂的数据操作和查询场景下,Spring Data Redis 都是一个强大的工具,可以帮助开发人员更轻松地使用 Redis。

3.2整合步骤

3.2.1导入依赖

xml 复制代码
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
     <version>2.7.3</version>
 </dependency>

3.2.2配置redis数据源

spring:
	redis:
    host: 地址
    port:端口号
    password:密码

3.2.3使用RedisTemplate进行操作

(1)创建RedisTemplate Bean
java 复制代码
@Configuration
public class RedisConfig {

  @Bean
  public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(connectionFactory);
    template.setKeySerializer(new StringRedisSerializer());
    template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    return template;
  }
}

上述示例中使用了 JSON 序列化器 来对值进行序列化和反序列化,你也可以根据需要选择其他序列化器。

(2)注入RedisTemplate

在想要用到RedisTemplate对象的地方中注入 RedisTemplate

java 复制代码
@Autowired
private RedisTemplate<String, Object> redisTemplate;
(3)执行Redis操作

使用注入的 RedisTemplate 来进行 Redis 操作,设置键值对、获取值等

java 复制代码
// 设置键值对
redisTemplate.opsForValue().set("key", "value");

// 获取值
String value = (String) redisTemplate.opsForValue().get("key");
(4)RedisTemplate操作常用数据类型
  • 字符串类

    1. 设置字符串值

      java 复制代码
      redisTemplate.opsForValue().set("myKey", "myValue");
    2. 获取字符串值

      java 复制代码
      Object value = redisTemplate.opsForValue().get("myKey");
    3. 设置字符串值并指定过期时间(单位:秒)

      java 复制代码
      redisTemplate.opsForValue().set("myKey", "myValue", 60);
    4. 判断键是否存在:

      java 复制代码
      boolean exists = redisTemplate.hasKey("myKey");
    5. 删除键:

      java 复制代码
      redisTemplate.delete("myKey");
    6. **原子递增:**其中,key 是要递增的键名,delta 是递增的步长。递增后的结果会作为返回值返回,并且该操作是原子性的,保证了在多线程或者分布式环境下也能正确处理递增操作

      java 复制代码
      Long incrementedValue = redisTemplate.opsForValue().increment(String key, long delta);
  • 哈希类

    1. 设置哈希字段值:

      java 复制代码
      redisTemplate.opsForHash().put("myHash", "field", "value");
    2. 获取哈希字段值:

      java 复制代码
      Object value = redisTemplate.opsForHash().get("myHash", "field");
    3. 获取所有哈希字段及值:

      java 复制代码
      Map<Object, Object> hash = redisTemplate.opsForHash().entries("myHash");
    4. 删除哈希字段:

      java 复制代码
      redisTemplate.opsForHash().delete("myHash", "field");

3.3小结

通过以上步骤,我们可以在Spring Boot中很容易地整合Redis,并且使用RedisTemplate来执行Redis操作。Spring Data Redis模块为我们提供了一种简洁而强大的方式来与Redis进行交互,无需编写大量的样板代码。同时,还提供了注解支持、事务支持和缓存支持等特性,可以根据实际需求进行定制和扩展。通过这些功能和特性,我们可以更加轻松地处理键值存储场景下的数据访问和操作,也能处理复杂的数据操作和查询场景。因此,Spring Data Redis是一个非常有用的工具和库,对于需要使用Redis进行开发的开发人员来说,是必不可少的。

相关推荐
2401_854391081 分钟前
城镇住房保障:SpringBoot系统功能概览
java·spring boot·后端
hummhumm3 分钟前
Oracle 第29章:Oracle数据库未来展望
java·开发语言·数据库·python·sql·oracle·database
wainyz12 分钟前
Java NIO操作
java·开发语言·nio
工业3D_大熊17 分钟前
【虚拟仿真】CEETRON SDK在船舶流体与结构仿真中的应用解读
java·python·科技·信息可视化·c#·制造·虚拟现实
lzb_kkk26 分钟前
【JavaEE】JUC的常见类
java·开发语言·java-ee
爬山算法1 小时前
Maven(28)如何使用Maven进行依赖解析?
java·maven
编程、小哥哥1 小时前
设计模式之抽象工厂模式(替换Redis双集群升级,代理类抽象场景)
redis·设计模式·抽象工厂模式
2401_857439691 小时前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧6661 小时前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
李老头探索1 小时前
Java面试之Java中实现多线程有几种方法
java·开发语言·面试