Redis Java 集成到 Spring Boot

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
🌱🌱个人主页:奋斗的明志
🌱🌱所属专栏:Redis

📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。

在这里插入图片描述

Redis Java 集成到 Spring Boot

一、使用 Spring Boot 连接 Redis 单机

1.创建Spring Boot 项目

在这里插入图片描述

2.勾选相关依赖(Dependencies)

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

在这里插入图片描述


在这里插入图片描述

3.界面显示

在这里插入图片描述

二、配置 Redis 服务地址

1.在 application.yml 中配置

```java
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 即可.
在这里插入图片描述

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

```

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

在这里插入图片描述

2.使用 String

```java
@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";
}

```
  1. 该代码片段是一个 Spring Boot 控制器方法,通过 RedisTemplate 与 Redis 进行交互,并进行一些基本的操作
  2. redisTemplate.execute((RedisConnection connection) -> { ... }):这行代码调用了 RedisTemplateexecute 方法,执行一个 Redis 操作。具体来说,connection.flushAll()会清空 Redis 中的所有数据(即调用 FLUSHALL 命令)。execute 方法通过 Lambda 表达式传递了一个 Redis 连接对象,用来执行 Redis 命令。执行完 flushAll 后,Redis 中的所有数据会被删除。
  3. redisTemplate.opsForValue() 相当于对命令进行进一步的封装,用它可以调用相关方法。

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

在这里插入图片描述


  • 打印日志

在这里插入图片描述


3.使用 List

```java
@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

```java
@GetMapping("/testSet")
@ResponseBody
public String testSet() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForSet().add("key", "111", "222", "333");
    Set 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

```java
@GetMapping("/testHash")
@ResponseBody
public String testHash() {
    //先清除之前的数据库
    redisTemplate.execute((RedisConnection connection) -> {
        connection.flushAll();
        return null;
    });
    redisTemplate.opsForHash().put("key", "f1", "111");
    Map 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

```java
@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 members = redisTemplate.opsForZSet().range("key", 0, -1);
    System.out.println("members: " + members);

    Set> 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 的基本操作, 还是很容易可以通过方法名字理解用法的.

在这里插入图片描述

在这里插入图片描述

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/5074.html

(0)
LomuLomu
上一篇 2025 年 1 月 1 日 上午1:59
下一篇 2025 年 1 月 1 日 上午3:00

相关推荐

  • WxPython跨平台开发框架之动态菜单的管理和功能权限的控制

    在一个业务管理系统中,如果我们需要实现权限控制功能,我们需要定义好对应的权限功能点,然后在前端界面中对界面元素的可用性和功能点进行绑定,这样就可以在后台动态分配权限进行动态控制了,一般来说,权限功能点是针对角色进行控制的,也就是简称RBAC(Role Based Access Control)。对于登录系统后的用户,对用户的菜单(工具栏)、界面操作按钮的权限…

    2025 年 1 月 6 日
    51700
  • 岁月如歌,深流静淌

    转眼间,毕业已近六载。记得2011年8月,那个炎热的夏日,我从江西赣州信丰火车站匆忙登上了北上的列车。不知这是命运的逃离还是上天的眷顾,那是我第一次离家如此遥远。如今重返南方,每日奔波于工作与生活之间,看似忙碌却又仿佛无声无息。记忆中的学生时代,老师们的话语犹在耳边。高中时,老师说高考是千军万马的指挥棒;初中时,老师说中考是踏入大学门槛的关键;小学时,老师既…

    未分类 2025 年 5 月 19 日
    40200
  • SpringBoot高级-底层原理

    “`markdown 目录 1 SpringBoot自动化配置原理 01-SpringBoot2高级-starter依赖管理机制 02-SpringBoot2高级-自动化配置初体验 03-SpringBoot2高级-底层原理-@Configuration配置注解 04-SpringBoot2高级-底层原理-@Import注解使用1 05-SpringBoo…

    2024 年 12 月 27 日
    42500
  • python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数据

    04 如何过滤(筛选)数据库中的数据 从数据库中获筛选数据主要应用以下几个接口:filter、filter_by、以及 where。前两个在 02已经展开说过,先展开说where接口 前情提要:依赖03提及的model【本质上就是数据库的链接,有可忽视】 当前的数据库表内容如下,仅作例子,不相同根据自身数据库操作即可: 4-1 通过where进行筛选 同时筛…

    2025 年 1 月 15 日
    59400
  • Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等

    目录 前言 集合类 ArrayList 1. 创建和初始化 ArrayList 2.添加元素 add 3.获取元素 get 4.删除元素 remove 5.检查元素 6.遍历 ArrayList LinkedList Stack 1. 创建Stack对象 2. 压入元素 (push) 3. 弹出元素 (pop) 4. 查看栈顶元素 (peek) 5. 检查栈…

    2025 年 1 月 1 日
    64300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信