当前位置:首页 » 《关注互联网》 » 正文

Redis Java 集成到 Spring Boot

8 人参与  2024年12月10日 10:01  分类 : 《关注互联网》  评论

点击全文阅读


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

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

在这里插入图片描述

Redis Java 集成到 Spring Boot

一、使用 Spring Boot 连接 Redis 单机1.创建Spring Boot 项目2.勾选相关依赖(Dependencies)3.界面显示 二、配置 Redis 服务地址1.在 application.yml 中配置2.映射端口号 三、创建 Controller 类1.创建一个 MyController2.使用 String3.使用 List4.使用 Set5.使用 Hash6.使用 ZSet 四、小结

一、使用 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 即可.
在这里插入图片描述

@RestControllerpublic class MyController { @Autowired private StringRedisTemplate redisTemplate;}

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

在这里插入图片描述

2.使用 String

@GetMapping("/testString")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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 的基本操作, 还是很容易可以通过方法名字理解用法的.

在这里插入图片描述

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/198952.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1