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

相关推荐
NGC_66111 分钟前
ConcurrentHashMap介绍
java·开发语言
JY.yuyu4 分钟前
Java Web上架流程(Nginx反向代理+负载均衡 ,Apache配置,Maven安装打包,Tomcat配置)
java·开发语言·前端
FL4m3Y4n6 分钟前
redis的主从同步与对象模型
数据库·redis·缓存
Mr.45678 分钟前
JDK17+Druid+SpringBoot3+ShardingSphere5 多表分库分表完整实践(MySQL+PostgreSQL)【生产优化版】
数据库·spring boot·后端
FL4m3Y4n10 分钟前
redis存储原理与数据模型
数据库·redis·缓存
逸Y 仙X12 分钟前
文章十二:索引数据的写入和删除
java·大数据·spring boot·spring·elasticsearch·搜索引擎·全文检索
代码探秘者16 分钟前
【算法篇】5.链表
java·数据结构·人工智能·python·算法·spring·链表
1104.北光c°18 分钟前
Leetcode3.无重复字符的最长子串 HashSet+HashMap 【hot100算法个人笔记】【java写法】
java·开发语言·笔记·程序人生·算法·leetcode·滑动窗口
Binary-Jeff18 分钟前
Maven 依赖作用域详解:compile、provided、runtime、test
java·spring·spring cloud·servlet·java-ee·maven
xindon1220 分钟前
如何使用redis缓存做用户信息
redis