【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.1
  port: 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 {
    @Autowired
    private 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上面》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FM1202,FM020和利时备品

FM1202,FM020和利时备品,统硬件设备、数据库、控制算法、图形、报表&#xff09;和相关系统参数的设置。对整个系统进行监视和控制。操作员站主要完成以下FM1202,FM020和利时备品,各种监视信息的显示、查询和打印&#xff0c;主要有工艺流程图显示、趋势显示、参数列表显示、报…

调用华为API实现语音合成

目录 1.作者介绍2.华为云语音合成2.1 语音合成介绍2.2 华为语音合成服务2.3 应用场景 3. 实验过程以及结果3.1 获取API密钥3.2 调用语音合成算法API3.3 实验代码3.4 运行结果 1.作者介绍 袁斌&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究…

【百万字详解Redis】集群

文章目录 一、集群模式概述1.1、什么是集群模式1.2、集群模式特点1.3、集群工作方式 二、集群模式的搭建2.1、搭建前的准备2.2、修改集群配置2.3、启动redis服务2.4、创建集群2.5、查看redis服务状态2.6、进入一个节点2.7、测试操作 三、集群操作3.1、主从切换3.2、从节点操作3…

重塑楼宇管理:智慧管控可视化开启高效新篇章

借助图扑智慧楼宇管控可视化技术&#xff0c;实现实时监控与智能化管理&#xff0c;快速响应潜在问题&#xff0c;确保楼宇安全、节能和高效运行。

【Mybatis】动态SQL标签3

foreach标签是使用举例 在实际应用中&#xff0c;我常常需要根据多个id批量的操作&#xff1a; 查询指定id的记录&#xff1a; 这时就可以用foreach标签&#xff1a; collection"ids" &#xff1a; 接口上传过来的数值或list集合或者map集合都可以 item"id&…

50etf期权怎么开户?期权懂有几种方式?

今天带你了解50etf期权怎么开户&#xff1f;期权懂有几种方式&#xff1f;50ETF期权开户可以通过证券公司、期权交易平台或期权交易应用进行。投资者需填写开户申请表格&#xff0c;提供身份证明和其他资料&#xff0c;完成开户手续。 50etf期权怎么开户&#xff1f; 满足资金…

linux内存缓存占用过高分析和优化

1、什么是buffer/cache &#xff1f; buffer/cache其实是作为服务器系统的文件数据缓存使用的&#xff0c;尤其是针对进程对文件存在read/write操作的时候&#xff0c;所以当你的服务进程在对文件进行读写的时候&#xff0c;Linux内核为了提高服务的读写速度&#xff0c;则将会…

亘古真知

目录 一&#xff0c;概述 二&#xff0c;个人面板 三&#xff0c;科技面板 四&#xff0c;手牌 五&#xff0c;回合 1&#xff0c;行动 &#xff08;1&#xff09;打造 &#xff08;2&#xff09;学习 &#xff08;3&#xff09;归档 &#xff08;4&#xff09;挖掘 …

网信办大模型备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…

用你熟悉的语言就能开发智能合约,Vara Network 以 WASM 解锁未来应用创新

Vara Network 自推出以来&#xff0c;凭借其基于 Gear Protocol 的独特架构和强大的开发工具&#xff0c;为开发者提供了一个高效、安全的智能合约构建平台。Vara Network 通过采用先进的 Actor 模型、持久内存概念和 WebAssembly 技术&#xff0c;实现了异步消息处理、并行计算…

湖南源点(市场研究咨询)如何产出更加有意义的竞品调研

湖南源点咨询认为&#xff1a;当前&#xff0c;任何项目都不能盲目开始&#xff0c;前期的准备工作必不可少。在基础架构搭建的同时&#xff0c;设计上对于前端功能、用户体验的调研就优先开始了。在这个阶段&#xff0c;大部分设计师都会分配很多调研任务&#xff0c;疯狂对竞…

YOLOv5改进总目录 | backbone、Neck、head、损失函数,注意力机制上百种改进技巧

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏地址&#xff1a; YOLOv5改进入门——持续更新各种有效涨点方法 点击即可跳转 报错 解决Yolov5的RuntimeError: result type Float can…

Leetcode:括号生成

题目链接&#xff1a;22. 括号生成 - 力扣&#xff08;LeetCode&#xff09; 题目分析 1、括号的类型只有&#xff08;&#xff09;一种&#xff0c;没有{}或者[] 2、括号可以进行多层嵌套 3、有效的括号组合需要满足以下两个条件&#xff08;任意一个子串&#xff09;&am…

Qt5学习笔记(一):Qt Widgets Application项目初探

笔者长期使用MFC开发Windows GUI软件。随着软件向Linux平台迁移的趋势越发明朗&#xff0c;GUI程序的跨平台需求也越来越多。因此笔者计划重新抓一下Qt来实现跨平台GUI程序的实现。 0x01. 看看Qt Widgets Application项目结构 打开Qt5&#xff0c;点击“ New”按钮新建项目。…

了解Java内存模型(Java Memory Model, JMM)

了解Java内存模型&#xff08;Java Memory Model, JMM&#xff09; Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是Java语言规范中规定的一组规则&#xff0c;定义了多线程程序中变量&#xff08;包括实例字段、静态字段和数组元素&#xff09;的访问方式。JM…

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个&#xff0c;一个是腾讯元宝&#xff0c;一个是通义千问。其它的豆包&#xff0c;Kimi&#xff0c;文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…

pdf文件在线压缩网站,pdf文件在线压缩工具软件

在数字化时代的今天&#xff0c;PDF文件已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着PDF文件的广泛使用&#xff0c;其文件大小问题也日益凸显。过大的PDF文件不仅占用了大量的存储空间&#xff0c;而且在传输和共享过程中也往往面临诸多不便。因此&am…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文 今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界&#xff0c;实在劝不动。他真的太逆天了&#xff0c;我不清楚这么高学历的人&#xff0c;怎么能说出这么天真的话。逆天又离谱。 晚上的时间几乎全在做家务。平时晚上都是跳舞来着&#xff0c…

LeetCode LRU缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;…