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

相关推荐
shehuiyuelaiyuehao2 小时前
1计算机是如何工作的
java·计算机网络
letisgo52 小时前
JAVA 高级进阶07篇《@Transactional失效的8个场景:代理机制到传播行为》
java·面试·transactional·spring事务·aop动态代理
水域安全老周2 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
三8443 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
暮雨哀尘3 小时前
Java 基础练习(一):创建类并调用对象
java·开发语言
想要入门的程序猿3 小时前
回调函数学习
java·网络·学习
EatFan3 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
泡海椒3 小时前
动态代理核心原理:JQuick-Java接口规则自动生成机制解析
java·开发语言·python
步行cgn4 小时前
Spring 启动报错:BeanFactory not initialized 的原因与解决
java·python·spring
步行cgn4 小时前
Spring 报错:No bean class specified on bean definition 的原因与解决
java·后端·spring