Redis Java 集成到 Spring Boot的详细过程

 更新时间:2024年12月30日 11:00:22   作者:明志学编程  
本文介绍了如何使用SpringBoot连接Redis,并展示了如何配置Redis服务地址、创建Controller类以及进行基本的Redis操作,如字符串、列表、集合、哈希和有序集合,感兴趣的朋友跟随小编一起看看吧

一、使用 Spring Boot 连接 Redis 单机

1.创建Spring Boot 项目

2.勾选相关依赖(Dependencies)

  • NoSQL 中的 Spring Data Redis
  • 把 Web 中的 Spring Web 也勾选⼀下.
  • 方便写接口进行后续测试.

3.界面显示

二、配置 Redis 服务地址

1.在 application.yml 中配置

spring:
  data:
    redis:
      host: 127.0.0.1 # 地址
      port: 8888 # 映射的端口号

补充:
Spring Boot 1.x 和 Spring Boot 2.x 中,spring.redis.host 用于配置 Redis 连接属性。
Spring Boot 3.x 中,spring.redis.host 已经弃用。
从 Spring Boot 2.x 开始,引入了 spring.data.redis 作为配置 Redis 连接的方式,并且在 Spring Boot 3.x 中也可以使用 spring.data.redis 进行配置。

2.映射端口号

用Shell8 进行配置,需要一个公网ip

三、创建 Controller 类

1.创建一个 MyController

由于当前只是写简单的测试代码, 我们就不进⾏分层了. 就只创建个简单的 Controller 即可.

@RestController
public class MyController {
 @Autowired
 private StringRedisTemplate redisTemplate;
}

StringRedisTemplate 用来处理文本数据的
继承于RedisTemplate
RedisTemplate 可以处理文本数据也可以处理二进制数据

2.使用 String

@GetMapping("/testString")
@ResponseBody
public String testString() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    //对原生 redis 又做了进一步封装
    redisTemplate.opsForValue().set("key", "111");
    redisTemplate.opsForValue().set("key2", "222");
    redisTemplate.opsForValue().set("key3", "333");
    String value = redisTemplate.opsForValue().get("key");
    System.out.println("value:" + value);
    return "OK";
}
  • 该代码片段是一个 Spring Boot 控制器方法,通过 RedisTemplate 与 Redis 进行交互,并进行一些基本的操作redisTemplate.execute((RedisConnection connection) -> { ... }):这行代码调用了
  • RedisTemplateexecute 方法,执行一个 Redis 操作。具体来说,connection.flushAll() 会清空 Redis 中的所有数据(即调用 FLUSHALL 命令)。execute 方法通过 Lambda 表达式传递了一个 Redis 连接对象,用来执行 Redis 命令。执行完 flushAll 后,Redis 中的所有数据会被删除。
  • redisTemplate.opsForValue() 相当于对命令进行进一步的封装,用它可以调用相关方法。

客户端发送请求(返回OK)表明已经成功

打印日志

3.使用 List

@GetMapping("/testList")
@ResponseBody
public String testList() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForList().leftPush("key", "111");
    redisTemplate.opsForList().leftPush("key", "222");
    redisTemplate.opsForList().leftPush("key", "333");
    String value = redisTemplate.opsForList().leftPop("key");
    System.out.println("value: " + value);
    value = redisTemplate.opsForList().leftPop("key");
    System.out.println("value: " + value);
    value = redisTemplate.opsForList().leftPop("key");
    System.out.println("value: " + value);
    return "OK";
}

客户端发送请求(返回OK)表明已经成功

打印日志

4.使用 Set

@GetMapping("/testSet")
@ResponseBody
public String testSet() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForSet().add("key", "111", "222", "333");
    Set<String> result = redisTemplate.opsForSet().members("key");
    System.out.println("result: " + result);
    Boolean exists = redisTemplate.opsForSet().isMember("key", "111");
    System.out.println("existe: " + exists);
    Long count = redisTemplate.opsForSet().size("key");
    System.out.println("count: " + count);
    redisTemplate.opsForSet().remove("key", "111", "222");
    result = redisTemplate.opsForSet().members("key");
    System.out.println("result: " + result);
    return "OK";
}

客户端发送请求(返回OK)表明已经成功

打印日志

5.使用 Hash

@GetMapping("/testHash")
@ResponseBody
public String testHash() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForHash().put("key", "f1", "111");
    Map<String, String> map = new HashMap<>();
    map.put("f2", "222");
    map.put("f3", "333");
    redisTemplate.opsForHash().putAll("key", map);
    String value = (String) redisTemplate.opsForHash().get("key", "f1");
    System.out.println("value: " + value);
    Boolean exists = redisTemplate.opsForHash().hasKey("key", "f1");
    System.out.println("exists: " + exists);
    redisTemplate.opsForHash().delete("key", "f1", "f2");
    Long len = redisTemplate.opsForHash().size("key");
    System.out.println("len: " + len);
    return "OK";
}

客户端发送请求(返回OK)表明已经成功

打印日志

6.使用 ZSet

@GetMapping("/testZSet")
@ResponseBody
public String testZSet() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForZSet().add("key", "zhangsan", 10);
    redisTemplate.opsForZSet().add("key", "lisi", 20);
    redisTemplate.opsForZSet().add("key", "wangwu", 30);
    Set<String> members = redisTemplate.opsForZSet().range("key", 0, -1);
    System.out.println("members: " + members);
    Set<ZSetOperations.TypedTuple<String>> membersWithScores = redisTemplate.opsForZSet().rangeWithScores("key", 0, -1);
    System.out.println("membersWithScores: " + membersWithScores);
    Double score = redisTemplate.opsForZSet().score("key", "zhangsan");
    System.out.println("score: " + score);
    redisTemplate.opsForZSet().remove("key", "zhangsan");
    Long size = redisTemplate.opsForZSet().size("key");
    System.out.println("size: " + size);
    Long rank = redisTemplate.opsForZSet().rank("key", "lisi");
    System.out.println("rank: " + rank);
    return "OK";
 }

客户端发送请求(返回OK)表明已经成功

打印日志

四、小结

  • 对于 Jedis 来说, 各个方法和 Redis 的命令基本是一致的.
  • 而集成到 Spring Boot 之后, 接口上和原始 Redis命令存在部分差别, 但是使用起来也并不困难, 只要大家熟悉 Redis 的基本操作, 还是很容易可以通过方法名字理解用法的.

到此这篇关于Redis Java 集成到 Spring Boot的文章就介绍到这了,更多相关Redis Java 集成到 Spring Boot内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 2.x 整合Lombok的方法示例

    SpringBoot 2.x 整合Lombok的方法示例

    Spring Boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这篇文章主要介绍了SpringBoot 2.x 整合Lombok的方法示例,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • SpringCloud使用集中配置组件Config规避信息泄露

    SpringCloud使用集中配置组件Config规避信息泄露

    项目应用中,数据库连接信息、Access-key、Secret-key等由于其及其敏感和特殊性,一旦泄露出去就很可能会使得应用遭到黑客攻击,例如数据库账号密码泄露可能导致“拖库”,甚至数据丢失。此等事件偶有发生,那么,在分布式微服务项目中,怎么避免这种情况呢
    2022-07-07
  • Java 数据结构与算法系列精讲之KMP算法

    Java 数据结构与算法系列精讲之KMP算法

    在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地方自己还是没有完全懂明白。这两天花了点时间总结一下,有点小体会,我希望可以通过我自己的语言来把这个算法的一些细节梳理清楚,也算是考验一下自己有真正理解这个算法
    2022-02-02
  • Java实现的简单画图板示例

    Java实现的简单画图板示例

    这篇文章主要介绍了Java实现的简单画图板,涉及java使用swing组件进行图形绘制相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • JAVA十大排序算法之基数排序详解

    JAVA十大排序算法之基数排序详解

    这篇文章主要介绍了java中的基数排序,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • SpringSecurity自定义登录接口的实现

    SpringSecurity自定义登录接口的实现

    本文介绍了使用Spring Security实现自定义登录接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Java字母大小写转换的方法

    Java字母大小写转换的方法

    这篇文章主要为大家详细介绍了Java字母大小写转换的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 微信公众号开发消息推送功能

    微信公众号开发消息推送功能

    微信公众号分为服务号、订阅号、企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以,这篇文章主要介绍了微信公众号开发消息推送功能,需要的朋友可以参考下
    2023-02-02
  • Jenkins迁移job插件Job Import Plugin流程详解

    Jenkins迁移job插件Job Import Plugin流程详解

    这篇文章主要介绍了Jenkins迁移job插件Job Import Plugin流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 简单了解Spring Framework5.0新特性

    简单了解Spring Framework5.0新特性

    这篇文章主要介绍了简单了解Spring Framework5.0新特性,涉及了核心框架修订,核心容器更新,使用Kotlin进行函数式编程等几个方面的介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论