【Redis】 Redis 集成到 Spring Boot上面

文章目录

  • 🍃前言
  • 🎄Spring Boot连接redis客户端
    • 🚩项目的创建
    • 🚩配置端⼝转发
    • 🚩配置 redis 服务地址
    • 🚩更改 Redis 配置文件
    • 🚩使用 StringRedisTemplate 类操作
  • 🎍Spring Boot操作Redis客户端
  • ⭕总结

🍃前言

Spring Boot 系列内置的 Redis 是 Lettuce, 和 Jedis 的使⽤还是存在⼀定的差异.

对于 Jedis 来说, 各个⽅法和 Redis的命令基本是⼀致的.

⽽集成到 Spring Boot 之后,接⼝上和原始 Redis 命令存在部分差别,但是使⽤起来也并不困难,很容易可以通过⽅法名字理解⽤法。

下面这篇文章的内容主要内容就为 Spring Boot如何连接 Redis 客户端 与 Spring Boot使用redis的一些命令

🎄Spring Boot连接redis客户端

Spring Boot连接redis客户端主要分为以下几个步骤:

  1. 项目的创建
  2. 配置端口转发
  3. 配置 redis 服务地址
  4. 更改 Redis 配置文件
  5. 使用 StringRedisTemplate 类操作

🚩项目的创建

勾选 NoSQL 中的Spring Data Redis

当然,把 Web 中的 Spring Web 也勾选⼀下,⽅便写接⼝进⾏后续测试.

在这里插入图片描述

🚩配置端⼝转发

edis 服务器安装在云服务器上, ⽽我们编写的代码则是在本地主机.

要想让本地主机能访问 redis, 需要把 redis 的端⼝(默认:6379)通过云服务器后台⻚⾯的 “防⽕墙” / "安全组"放开端⼝到公⽹上.

但是这个操作⾮常危险(⿊客会顺着redis 端⼝进来)。因此我们可以使⽤端⼝转发的⽅式, 直接把服务器的 redis 端⼝映射到本

博主使用的时 xshell 操作 linux 服务器,如果这部分还不会的小伙伴可以参考博主写的 【JavaEE进阶】使用云服务器实现Linux环境搭建

在 xshell 中, 进⾏如下配置:

  1. 右键云服务器的会话, 选择属性.
  2. 找到隧道 -> 配置转移规则

在这里插入图片描述
在这里插入图片描述

此处需要注意的是:

  • 如果你之前已经连接上服务器,然后再进行配置,这时你需要重新断开进行连接

此时访问本地的 8888,就相当于访问对应服务器的 6379

这里我们也可以通过本地 cmd 输入以下命令查看我们所配置端口是否被使用来判断配置是否成功

在这里插入图片描述

🚩配置 redis 服务地址

在 application.yml 中配置
在这里插入图片描述
配置代码如下:

spring:redis:host: 127.0.0.1port: 8888

🚩更改 Redis 配置文件

我们想要通过该端口正确访问 Redis 时,我们还需要对 Redis 配置文件进行如下配置

首先我们使用vim命令进入,打开相应的配置文件,命令如下

vim /etc/redis/redis.conf

然后点击 i 进入插入模式进行修改,需要修改的点如下:

  • 修改 bind 127.0.0.1 为 bind 0.0.0.0
  • 修改 protected-mode yes 为 protected-mode no

在这里插入图片描述

最后按 Esc 键,并输入 :wq,按下enter键返回即可

🚩使用 StringRedisTemplate 类操作

创建一个 controller 类,并注入 StringRedisTemplate 类

代码示例如下:

@RestController
public class RedisController {@Autowiredprivate StringRedisTemplate redisTemplate;
}

后续操作通过操作 redisTemplate 实例实施redis命令

🎍Spring Boot操作Redis客户端

Spring Boot 重新封装了操作命令,分别通过上面所创建的redisTemplate实例的不同的方法进行调用不同类型的命令

  • String类型:redisTemplate.opsForValue()
  • List类型:redisTemplate.opsForList()
  • 哈希类型:redisTemplate.opsForHash()
  • 集合类型:redisTemplate.opsForSet()
  • 有序集合类型:redisTemplate.opsForZSet()

基础操作指令如下:

使用String类型:

@RequestMapping("testString")
public String testString() {redisTemplate.opsForValue().set("key", "value");String value = redisTemplate.opsForValue().get("key");System.out.println(value);redisTemplate.delete("key");return "OK";
}

使用List类型:

@RequestMapping("testList")
public String testList() {redisTemplate.opsForList().leftPush("key", "a");redisTemplate.opsForList().leftPushAll("key", "b", "c", "d");List<String> values = redisTemplate.opsForList().range("key", 1, 2);System.out.println(values);redisTemplate.delete("key");return "OK";
}

使用hash类型:

@RequestMapping("/testHash")
public String testHashmap() {redisTemplate.opsForHash().put("key", "name", "zhangsan");String value = (String) redisTemplate.opsForHash().get("key", "name");System.out.println(value);redisTemplate.opsForHash().delete("key", "name");boolean ok = redisTemplate.opsForHash().hasKey("key", "name");System.out.println(ok);redisTemplate.delete("key");return "OK";
}

使用set:

@RequestMapping("/testSet")
public String testSet() {redisTemplate.opsForSet().add("key", "aaa", "bbb", "ccc");boolean ok = redisTemplate.opsForSet().isMember("key", "aaa");System.out.println(ok);redisTemplate.opsForSet().remove("key", "aaa");long n = redisTemplate.opsForSet().size("key");System.out.println(n);redisTemplate.delete("key");return "OK";
}

使用zset:

@RequestMapping("/testZset")
public String testZSet() {redisTemplate.opsForZSet().add("key", "吕布", 100);redisTemplate.opsForZSet().add("key", "赵云", 98);redisTemplate.opsForZSet().add("key", "典⻙", 95);Set<String> values = redisTemplate.opsForZSet().range("key", 0, 2);System.out.println(values);long n = redisTemplate.opsForZSet().count("key", 95, 100);System.out.println(n);redisTemplate.delete("key");return "OK";
}

上面只是介绍使用了一些简单的命令,有需要的小伙伴可以查看专业文档进行详细学习

⭕总结

关于《【Redis】 Redis 集成到 Spring Boot上面》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/343958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA网络编程,反射及注解知识总结

文章目录 网络编程软件架构三要素IP端口号协议UDP协议发送数据接收数据三种通信方式 TCP协议客户端服务器端三次握手四次挥手 反射获取字节码文件获取构造方法获取成员变量获取成员方法反射的作用 动态代理注解作用格式使用位置注解的原理常见注解元注解自定义注解解析注解 网络…

安装windows11系统跳过微软账号登录,使用本地账号登录方法

在安装win11系统&#xff0c;进行到如图下所示界面的时候&#xff0c;暂停下 我们可以按下键盘的ShiftF10按键&#xff08;部分电脑是FnShiftF10&#xff09;&#xff0c;这时屏幕会出现命令行窗口&#xff0c;如图下所示 我们需要在命令行内输入代码oobe\bypassnro.cmd然后回车…

[AI Google] 双子座模型家族迎来新突破:更快的模型、更长的上下文、AI代理等更多功能

Google发布了Gemini模型家族的更新&#xff0c;包括新的1.5 Flash模型&#xff0c;该模型旨在提高速度和效率&#xff0c;以及Project Astra&#xff0c;这是对未来AI助手愿景的展示。1.5 Flash是专为大规模高频任务优化的轻量级模型&#xff0c;具有突破性的长上下文窗口。同时…

积累常用css

1、封面文字&#xff0c;垂直居中&#xff0c;可以两列并排 font-size: 20px;font-weight: 600;color: #333;line-height: 20px;display: block;word-wrap: break-word;writing-mode: vertical-lr;height: 160px;margin: 0 auto; 2、宽border效果 .dashed-box { margin: 80px…

超详解——识别None——小白篇

目录 1. 内建类型的布尔值 2. 对象身份的比较 3. 对象类型比较 4. 类型工厂函数 5. Python不支持的类型 总结&#xff1a; 1. 内建类型的布尔值 在Python中&#xff0c;布尔值的计算遵循如下规则&#xff1a; None、False、空序列&#xff08;如空列表 []&#xff0c;空…

webapi跨越问题

由于浏览器存在同源策略&#xff0c;为了防止 钓鱼问题&#xff0c;浏览器直接请求才不会有跨越的问题 浏览器要求JavaScript或Cookie只能访问同域下的内容 浏览器也是一个应用程序&#xff0c;有很多限制&#xff0c;不能访问和使用电脑信息&#xff08;获取cpu、硬盘等&#…

YOLOv5车流量监测系统研究

一. YOLOv5算法详解 YOLOv5网络架构 上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言&#xff0c;我们通常可以将其划分为4个通用的模块&#xff0c;具体包括&#xff1a;输入端、基准网络、Neck网络与Head输出端&#xff0c;对应于上图中的4个红色模块。Y…

java 类加载器及双亲委派机制

1、 有哪些类加载器 还有自定义类加载器。最上面的为父加载器&#xff0c;加载类的路径是不一样的 2、 什么是双亲委派机制&#xff1a; 1. 加载时&#xff0c;先去找父类&#xff0c;父类无法加载时&#xff0c;在由儿子加载 3、 为什么用双亲委派&#xff1a; 沙箱安全&…

旧衣回收小程序开发,轻松回收旧衣物

随着环保理念的增强&#xff0c;回收市场得到了快速发展&#xff0c;吸引了不少年轻人进入到市场中创业。除了传统的废品回收外&#xff0c;旧衣回收也受到了大众的重视&#xff0c;市场规模迅速扩大&#xff0c;大众浪费的衣物也获得了归处。 目前旧衣回收的方式主要是线上与…

D-Day 上海站回顾丨以科技赋能量化机构业务

5月31日下午&#xff0c;DolphinDB 携手光大证券&#xff0c;在上海成功举办 D-Day 行业交流会。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场&#xff0c;深入交流量化投研交易过程中的经验、挑战及解决方案。 DolphinDB 赋能机构业务平台 来自光…

标准发布实施 |《新能源电池工业废水处理技术指南磷酸铁锂电池》

T/ACEF 130&#xff0d;2024《新能源电池工业废水处理技术指南磷酸铁锂电池》欢迎各单位引用执行&#xff01;有课题也可联合立项&#xff01; 发布日期&#xff1a;2024年02月04日 实施日期&#xff1a;2024年03月01日 主要起草人&#xff1a;刘愿军、孙冬、丁炜鹏、何小芬…

网络基础_02

1.ARP协议 地址解析协议&#xff08;Address Resolution Protocol&#xff09; 已知对方的三层ip地址&#xff0c;需要二层mac地址 当一台设备&#xff08;请求方&#xff09;需要知道某个 IP 地址对应的 MAC 地址时&#xff0c;会使用 ARP封装一个数据帧。这台设备的网络层以…

论文高级图表绘制(Python语言,局部放大图)

本文将通过一个具体的示例,展示如何使用Python语言和Matplotlib库来绘制高级图表,包括局部放大图的制作。适用于多条曲线绘制在同一个图表中,但由于数据量过大,导致曲线的细节看不清,需要对细节进行局部放大。如下图: 环境准备 首先,确保你的Python环境中已经安装了以…

Three.js——粒子效果、粒子水波、粒子组成立方体

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

【启明智显彩屏应用】Model3A 7寸触摸彩屏AGV小车应用方案

一、AGV小车概述 &#xff08;一&#xff09;介绍 自动导向车(Automated Guided Vehicle&#xff0c;简称AGV)&#xff0c;也称为自动导向搬运车、自动引导搬运车。AGV广泛应用在自动化的生产当中&#xff0c;大大节约劳动力和提高生产效率。 &#xff08;二&#xff09;现状…

MySQL——C语言连接数据库

MySQL Connection ​ 连接数据库的客户端除了命令行式的还有图形化界面版本&#xff0c;网页版本&#xff0c;当然也包括语言级别的库或者是包&#xff0c;能够帮助我们直接连接数据库&#xff1b; 一、语言连接库下载 方式一&#xff1a;不建议使用&#xff0c;需要自己配置…

PDF编辑与修正 提高工作效率 Enfocus PitStop Pro 2022 中文

Enfocus PitStop Pro 2022是一款专为Mac用户设计的强大PDF编辑和校对工具。它支持添加、删除、合并、分割PDF页面&#xff0c;以及文本和图像的编辑&#xff0c;如文字替换、字体更改、颜色调整等。内置自动修复功能&#xff0c;能快速检测并修复缺失字体、重叠文本等常见问题。…

技术架构的发展

技术架构的演进 主要方向&#xff1a; ​ 1.提高单位时间内的吞吐量&#xff0c;提高并发度&#xff1b; ​ 2.对应用服务代码进行解耦合&#xff0c;使得开发效率得到提高&#xff1b; ​ 3.运维成本降低&#xff1b; ​ 4.成本降低&#xff0c;如购买云厂商资源&#xf…

【计算机网络】对应用层协议中HTTPS协议的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…