springboot 整合redis

文章目录

  • 一、Jedis
  • 二、Lettuce
  • 三、RedisTemplate(重点)
    • 单机
    • 3.1 springboot 整合swagger
    • 3.2 序列化+中文问题
    • 集群
    • 3.3 applications配置
    • 3.4 问题

一、Jedis

package com.example.redis;import redis.clients.jedis.Jedis;import javax.print.DocFlavor;
import java.util.*;/*** @ClassName Mydemo* @Description TODO* @Author lukcy* @Date 2024/6/23 10:31* @Version 1.0*/
public class Mydemo {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1", 6379);//有密码的话
//        jedis.auth("qqqqqq");//看是否连接上System.out.println(jedis.ping());Set<String> keys = jedis.keys("*");System.out.println(keys);//Stringjedis.set("k1","v1");System.out.println(jedis.get("k1"));System.out.println(jedis.ttl("k1"));System.out.println(jedis.expire("k1",20L));//listjedis.lpush("list","11","22");List<String> list = jedis.lrange("list", 0, -1);for (String s : list) {System.out.println(s);}//hashjedis.hset("hash","k2","2");System.out.println(jedis.hget("hash","k2"));Map<String,String> map=new HashMap<String,String>();map.put("k3","3");map.put("k4","4");jedis.hmset("hash1",map);//setjedis.sadd("k6","6");jedis.sadd("k6","7");jedis.sadd("k6","7");Set<String> set1 = jedis.smembers("k6");for (Iterator iterator =set1.iterator(); iterator.hasNext();){String string=(String)iterator.next();System.out.println(string);}jedis.srem("orders","jd002");System.out.println(jedis.smembers("orders").size());jedis.zadd("k9",20d,"9");}
}

二、Lettuce

在这里插入图片描述

package com.example.redis;import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;import java.util.List;/*** @ClassName Mydemo2* @Description TODO* @Author lukcy* @Date 2024/6/23 11:07* @Version 1.0*/
public class Mydemo2 {public static void main(String[] args) {
//        RedisURI.builder().redis("127.0.0.1").withPort(6379).withAuthentication("default","11111").build();RedisURI build = RedisURI.builder().redis("127.0.0.1").withPort(6379).build();//获得客户端RedisClient redisClient = RedisClient.create(build);StatefulRedisConnection<String, String> connect = redisClient.connect();//通过conn 获得commandRedisCommands commands = connect.sync();//业务逻辑List keys = commands.keys("*");for (Object key : keys) {System.out.println(key);}//释放connect.close();redisClient.shutdown();}
}

三、RedisTemplate(重点)

单机

springboot可以整合的,lettuce其实就被整合到了这个包里。

pom

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

在这里插入图片描述

service.java

package com.example.redis.controller;import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;/*** @ClassName Service1* @Description TODO* @Author lukcy* @Date 2024/6/23 16:19* @Version 1.0*/
@Service
@Slf4j
public class Service1 {public static final String ORDER_KEY = "ord:";@Resourceprivate RedisTemplate redisTemplate;public void addorder(){int keyId = ThreadLocalRandom.current().nextInt(1000)+1;String serialNo = UUID.randomUUID().toString();String key= ORDER_KEY+keyId;String value ="京东订单"+serialNo;redisTemplate.opsForValue().set(key,value);log.info("***key:{}",key);log.info("***value:{}",value);
}public String getOrdeByID(Integer key_id){return (String) redisTemplate.opsForValue().get(ORDER_KEY+key_id);}
}

controller.java

package com.example.redis.controller;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
@Slf4j
@Tag(name = "订单接口")
public class HelloController {@Autowiredpublic Service1 service1;@GetMapping("order/add")@Operation(summary = "新增订单", description = "新增订单")public void addOrd() {service1.addorder();}@GetMapping("order/{id}")@Operation(summary = "查询订单", description = "查询订单")public String getorder( @PathVariable Integer id){return service1.getOrdeByID(id);}}

3.1 springboot 整合swagger

博客链接
springboot3 整合swagger2和3时都会报错,可以看上边博客。
之后我们进入swagger

在这里插入图片描述
可以在这里直接进行http请求。

3.2 序列化+中文问题

在上边代码 我们使用的是RedisTemplate 它使用默认的序列化器 所以我们会看到存储到redis中显示
在这里插入图片描述
在这里插入图片描述
并不是我们存储的ord+序号

如果我们想要是我们存储的 可以使用StringRedisTemplate

package com.example.redis.controller;import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;/*** @ClassName Service1* @Description TODO* @Author lukcy* @Date 2024/6/23 16:19* @Version 1.0*/
@Service
@Slf4j
public class Service1 {public static final String ORDER_KEY = "ord:";@Resourceprivate StringRedisTemplate stringRedisTemplate;public void addorder(){int keyId = ThreadLocalRandom.current().nextInt(1000)+1;String serialNo = UUID.randomUUID().toString();String key= ORDER_KEY+keyId;String value ="京东订单"+serialNo;stringRedisTemplate.opsForValue().set(key,value);log.info("***key:{}",key);log.info("***value:{}",value);
}public String getOrdeByID(Integer key_id){return stringRedisTemplate.opsForValue().get(ORDER_KEY+key_id);}
}

这样子存储的就是 在这里插入图片描述

如果在redis中 要显示中文 可以在后边加上–raw 如果还不是中文 可以先输入
在这里插入图片描述
之后在进入客户端

就是中文了。

集群

3.3 applications配置

在这里插入图片描述

3.4 问题

在这里插入图片描述

如果一个主机宕机,虽然再服务器redis上已经从机上机了,故障迁移成功,但是java服务器
并没有检测到最新的消息。

解决方法:开启自动刷新
在这里插入图片描述

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

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

相关文章

【编译原理】绪论

1.计算机程序语言以及编译 编译是对高级语言的翻译 源程序是句子的集合&#xff0c;树可以较好的反应句子的结构 编译程序是一种翻译程序 2.编号器在语言处理系统中的位置 可重定位&#xff1a;在内存中存放的起始位置不是固定的 加载器&#xff1a;修改可重定位地址&#x…

古文字识别笔记

前置知识 部件&#xff1a;大部分的汉字是由若干组笔画结构拼合而成的&#xff0c;这些相对独立的笔画结构称为「部件」。 部件是大于基本笔画&#xff08;例如&#xff1a;点、横、撇、捺等&#xff09;而小于或等同于 偏旁 的结构单位。 例如「测」字有三个部件&#xff1a;…

【学习】使用PyTorch训练与评估自己的ResNet网络教程

参考&#xff1a;保姆级使用PyTorch训练与评估自己的ResNet网络教程_训练自己的图像分类网络resnet101 pytorch-CSDN博客 项目地址&#xff1a;GitHub - Fafa-DL/Awesome-Backbones: Integrate deep learning models for image classification | Backbone learning/comparison…

高效修复机床导轨磨损,保障加工精度!

机床导轨是支承和引导运动构件沿着一定轨迹运动的传动装置&#xff0c;在机器设备中是个十分重要的部件&#xff0c;在机床中是常见的部件。机床的加工精度与导轨精度有直接的联系&#xff0c;且导轨一旦损坏&#xff0c;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…

编程设计思想

健康检查脚本 nmap:扫描端口 while true do healthycurl B:httpPORT/healthy -i | grep HTTP/1.1 | tail -n 1 | awk {print $2} done 批量操作类型脚本&#xff08;记录每一步日志&#xff09; 将100个nginx&#xff1a;vn推送到harbor仓库192.168.0.100 根据镜像对比sha值…

【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers

在当今人工智能与大数据飞速发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为推动科技进步的重要力量。而在NLP领域&#xff0c;Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度&#xff0c;为您深…

面向对象修炼手册(四)(多态与空间分配)(Java宝典)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;面向对象修炼手册 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 1 多态 1.1 多态的形式&…

需求之 实现获取调试信息在h5页面,在手机端可以查看调试(二)

事实证明 chatgpt很好用&#xff0c;有不懂的问题可以问它 https://zhuanlan.zhihu.com/p/690118775 国内外9个免费的ChatGPT网站 我筛选出来的比较好用免费的网站 fchat.dykyzdh.cn/ 这个也可以 阿里云的 通义灵码 在vscode中安装使用 而且阿里云有一个产品&#xff0c;可以…

面试-Java线程池

1.利用Excutors创建不同的线程池满足不同场景的需求 分析&#xff1a; 如果并发的请求的数量非常多&#xff0c;但每个线程执行的时间非常短&#xff0c;这样就会频繁的创建和销毁线程。如此一来&#xff0c;会大大降低系统的效率。 可能出现&#xff0c;服务器在为每个线程创建…

jdk1.8升级到jdk11遇到的各种问题

一、第三方依赖使用了BASE64Decoder 如果项目中使用了这个类 sun.misc.BASE64Decoder&#xff0c;就会导致错误&#xff0c;因为再jdk11中&#xff0c;该类已经被删除。 Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder 当然这个类也有替换方式&#xf…

MySQL实训--原神数据库

原神数据库 er图DDL/DML语句查询语句存储过程/触发器 er图 DDL/DML语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;DROP TABLE IF EXISTS artifacts; CREATE TABLE artifacts (id int NOT NULL AUTO_INCREMENT,artifacts_name varchar(255) CHARACTER SET utf8 COLLATE …

一文搞懂Linux多线程【下】

目录 &#x1f6a9;多线程代码的健壮性 &#x1f6a9;多线程控制 &#x1f6a9;线程返回值问题 &#x1f6a9;关于Linux线程库 &#x1f6a9;对Linux线程简单的封装 在观看本博客之前&#xff0c;建议大家先看一文搞懂Linux多线程【上】由于上一篇博客篇幅太长&#xff0c;为…

文件操作<C语言>

导言 平时我们在写程序时&#xff0c;在运行时申请内存空间&#xff0c;运行完时内存空间被收回&#xff0c;如果想要持久化的保存&#xff0c;我们就可以使用文件&#xff0c;所以下文将要介绍一些在程序中完成一些文件操作。 目录 导言 文件流 文件指针 文件的打开与关闭 …

《黑神话悟空》电脑配置要求

《黑神话&#xff1a;悟空》这款国内优秀的3A游戏大作&#xff0c;拥有顶级的特效与故事剧情&#xff0c;自公布以来便备受玩家期待&#xff0c;其精美的画面与流畅的战斗体验&#xff0c;对玩家的电脑配置提出一定要求。那么这款优秀的游戏需要什么样的电脑配置&#xff0c;才…

记录:[android] SSLHandshakeException: Handshake failed 问题;已解决!

1、问题描述&#xff1a;在使用Retrofit2 时在安卓老设备上&#xff08;安卓6.0&#xff09;网络无法请求、安卓 10 、 11 未出现此问题&#xff1f;what? 原因&#xff1a;服务端 TLS 版本过高 2、废话不多说、解决方案A 、添加依赖&#xff1a;implementation org.conscrypt…

黑马苍穹外卖6 清理redis缓存+Spring Cache+购物车的增删改查

缓存菜品 后端服务都去查询数据库&#xff0c;对数据库访问压力增大。 解决方式&#xff1a;使用redis来缓存菜品&#xff0c;用内存比磁盘性能更高。 key :dish_分类id String key “dish_” categoryId; RestController("userDishController") RequestMapping…

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发 码客 卢益贵 ygluu 关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…

【每日刷题】Day75

【每日刷题】Day75 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1833. 雪糕的最大数量 - 力扣&#xff08;LeetCode&#xff09; 2. 面试题 17.14. 最小K个数 - 力扣…

LabVIEW电梯钢丝绳实时监测系统

电梯作为现代高层建筑中不可或缺的交通工具&#xff0c;其安全性直接影响到乘客的生命财产安全。电梯钢丝绳作为承载乘客与货物的关键部件&#xff0c;其健康状况尤为重要。传统的钢丝绳检测方法大多依赖于定期检查&#xff0c;无法实现实时监控&#xff0c;存在一定的安全隐患…

DPDK使用make编译并运行示例程序

环境&#xff1a; VMware Workstation 16 Pro 16.2.4 虚拟机系统&#xff1a;Centos 8 DPDK版本&#xff1a;stable-20.11.10 下载源码后&#xff0c;使用meson和ninja编译完成、配置并挂载大页、内核和VFIO设置完成&#xff0c;在dpdk源码目录下的build/…