当前位置: 首页 > news >正文

【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)

目录

Spring Boot中集成Redis

1.项目创建和环境配置

2.基本操作演示


Spring Boot中集成Redis

        Spring社区也自定义了一套Redis的客户端,与jedis的操作方式有所差异,Spring中把每个类型的操作都单独封装了起来。下面就让我来带大家了解如何在Spring Boot项目中使用Redis。

1.项目创建和环境配置

1.第一步创建Spring Boot项目,在创建项目时勾选NoSQL中的Spring Data Redis,然后等待项目加载。

 2.第二步在application.yml中配置Redis服务地址

spring:data:redis:host: 127.0.0.1port: 8888

如果需要进行redis集群的配置可以使用下面的配置项:

spring:data:redis:cluster:nodes:- 172.30.0.101:6379- 172.30.0.102:6379- 172.30.0.103:6379- 172.30.0.104:6379- 172.30.0.105:6379- 172.30.0.106:6379- 172.30.0.107:6379- 172.30.0.108:6379- 172.30.0.109:6379lettuce:cluster:refresh:adaptive: trueperiod: 2000

      下⽅的 lettuce 系列配置,⽬的是为了⾃动刷新集群的拓扑结构。当集群中有节点宕机/加⼊新节点之后, 我们的代码能够⾃动感知到集群的变化。由于上述 ip 都是 docker 容器的 ip, 在 windows 主机上不能直接访问。因此需要把程序打成 jar 包, 部署到 linux 上,再通过 java -jar [jar包名] 的⽅式执⾏。

 3.第三步引入StringRedisTemplate实例,便可以通过redisTemplate进行Redis的相关操作了。

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

2.基本操作演示

1.String类型操作演示:

@RestController
public class MyController {@Autowiredprivate StringRedisTemplate redisTemplate;@GetMapping("/testString")public String testString(){redisTemplate.opsForValue().set("key","value");String value = redisTemplate.opsForValue().get("key");System.out.println(value);redisTemplate.delete("key");return "OK";}
}

在上述代码中,我们通过调用redisTemplate的opsForValue方法可以得到一个专门操作Redis中String类型的对象,通过这个对象的操作我们便可以得到如下结果:

 2.List类型操作演示:

    @GetMapping("/testList")@ResponseBodypublic 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";}

在上述代码中,我们通过调用redisTemplate的opsForList方法可以得到一个专门操作Redis中List类型的对象,通过这个对象的操作我们便可以得到如下结果: 

3.Set类型操作演示:

    @GetMapping("/testSet")@ResponseBodypublic 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";}

在上述代码中,我们通过调用redisTemplate的opsForSet方法可以得到一个专门操作Redis中Set类型的对象,通过这个对象的操作我们便可以得到如下结果: 

4.Hash类型操作演示:

    @GetMapping("/testHashmap")@ResponseBodypublic 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";}

在上述代码中,我们通过调用redisTemplate的opsForHash方法可以得到一个专门操作Redis中Hash类型的对象,通过这个对象的操作我们便可以得到如下结果: 

5.Sorted Set类型操作演示:

    @GetMapping("/testZSet")@ResponseBodypublic 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";}

在上述代码中,我们通过调用redisTemplate的opsForZSet方法可以得到一个专门操作Redis中Sorted Set类型的对象,通过这个对象的操作我们便可以得到如下结果: 

相关文章:

  • 计算机网络第六章——应用层
  • 速盾:cdn是怎么加速视频的?
  • 【解密 Kotlin 扩展函数】顶级函数和顶级属性(十五)
  • 极狐GitLab 17.4 重点功能解读【一】
  • springboot基于学习行为的学生选课成绩分析系统设计与实现
  • 计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
  • oracle数据备份和导入
  • RT_Thread内核源码分析(二)——链表和对象管理
  • 2024.9.27 Python面试八股文
  • Linux权限解析
  • 自学网络安全(黑客技术)2024年 90天学习计划
  • 微信小程序加载H5页面及与H5页面通信的实战教程
  • 多旋翼无人机“仿鸟类”精确拦截飞行目标,助力低空安全
  • 鹏哥C语言55-57---二维数组+数组越界+数组传参(冒泡排序)
  • 婚恋交友小程序的设计思路与用户体验优化
  • fetch 从初识到应用
  • HTTP中GET与POST的区别 99%的错误认识
  • Java,console输出实时的转向GUI textbox
  • java8 Stream Pipelines 浅析
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql 5.6 原生Online DDL解析
  • SOFAMosn配置模型
  • SQLServer之创建显式事务
  • text-decoration与color属性
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 编写符合Python风格的对象
  • 从零开始的无人驾驶 1
  • 后端_MYSQL
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信小程序--------语音识别(前端自己也能玩)
  • 一些css基础学习笔记
  • 组复制官方翻译九、Group Replication Technical Details
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #AngularJS#$sce.trustAsResourceUrl
  • #QT 笔记一
  • (+4)2.2UML建模图
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net 6.0--通用帮助类--FileHelper
  • .NET Core中Emit的使用
  • .NET Micro Framework初体验(二)
  • .net 提取注释生成API文档 帮助文档
  • .NET的数据绑定
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @JsonFormat与@DateTimeFormat注解的使用
  • @RequestMapping处理请求异常
  • @软考考生,这份软考高分攻略你须知道
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149