【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进行开发的开发人员来说,是必不可少的。

相关推荐
华科云商xiao徐17 分钟前
Java HttpClient实现简单网络爬虫
java·爬虫
扎瓦30 分钟前
ThreadLocal 线程变量
java·后端
BillKu1 小时前
Java后端检查空条件查询
java·开发语言
jackson凌1 小时前
【Java学习笔记】String类(重点)
java·笔记·学习
一只爱撸猫的程序猿1 小时前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
刘白Live1 小时前
【Java】谈一谈浅克隆和深克隆
java
一线大码1 小时前
项目中怎么确定线程池的大小
java·后端
要加油哦~1 小时前
vue · 插槽 | $slots:访问所有命名插槽内容 | 插槽的使用:子组件和父组件如何书写?
java·前端·javascript
crud1 小时前
Spring Boot 3 整合 Swagger:打造现代化 API 文档系统(附完整代码 + 高级配置 + 最佳实践)
java·spring boot·swagger
天天摸鱼的java工程师1 小时前
从被测试小姐姐追着怼到运维小哥点赞:我在项目管理系统的 MySQL 优化实战
java·后端·mysql