尚硅谷redis7 93-97 springboot整合reids之总体概述

article/2025/6/12 9:20:31

93 springboot整合reids之总体概述

总体概述

jedis-lettuce-RedisTemplate三者的联系

名称类型作用描述和其它的关系
JedisRedis 客户端早期主流的 Java Redis 客户端,基于阻塞 I/O,同步操作可作为 RedisTemplate 的底层连接实现
LettuceRedis 客户端基于 Netty、支持异步/响应式编程,更适合高并发场景也可作为 RedisTemplate 的底层连接实现
RedisTemplateSpring 封装类Spring Data Redis 提供的操作 Redis 的高级模板,简化开发底层依赖 Jedis 或 Lettuce

本地java连接Redis常见问题,小白注意

redis.conf配置文件中bind配置请注释掉

保护模式设置为no

linux系统的防火墙设置

redis服务器的ip地址和密码是否正确

忘记写访问redis服务端口号和auth密码

集成Jedis

略 跟着视频操作即可

集成lettuce

每次连接redis都要new一个对象非常消耗资源。

Jedis和Lettuce的区别

jedis和Lettuce都是Redis的客户端,它们都可以连接Redis服务器,但是在SpringBoot2.0之后默认都是使用的Lettuce这个客户端连控Redis服务器。因为当使用Jedis客户端连接Redis服务器时候,每个线程都要拿自己创建的Jedis实例去连接Redis客户端,当有很多个线程的时候,不仅开销大需要反复的创建关闭一个Jedis连接,而且也是线程不安全的,一个线程通过Jedis实例更改Redis服务器中的数据之后会影响另一个线程;

但是如果使用Lettuce这个客户端连接Redis服务器的时候,就不会出现上面的情况,Lettuce底层使用的是Netty.当有多个线程都需要连接Redis服务器的时候,可以保证只创建一个Lettuce连接,使所有的线程共享这一个Lettuce连接,这样可以减少创建关闭一个Lettuce连接时候的开销;而且这种方式也是线程安全的,不会出现一个线程通过Lettuce更改Redis服务器中的数据之后而影响另一个线程的情况;

集成RedisTemplate【推荐使用】

@Service
@Slf4j
public class OrderService {//设置Key的前缀public static final String ORDER_KEY = "ord:";// 有两个一个是系统默认的,一个是在Config中手动配置的,在这里由于@Resouce所以使用手动配置的@Resourceprivate RedisTemplate redisTemplate;public void addOrder(){ // 写操作 添加订单// 生成一个 1 到 1000(包含1和1000)之间的随机整数。int keyId = ThreadLocalRandom.current().nextInt(1000)+1;//生成一个随机的唯一标识符(UUID),并将它转换成字符串赋值给 serialNo。String serialNo = UUID.randomUUID().toString();String key = ORDER_KEY+keyId;String value = "京东订单"+serialNo;// redisTemplate.opsForValue()  获取操作 Redis 字符串(String)类型数据的操作接口redisTemplate.opsForValue().set(key,value);log.info("***key:{}",key);log.info("***value:{}",value);}public String getOrderById(Integer keyId){return redisTemplate.opsForValue().get(ORDER_KEY+keyId).toString();}
}

PS:如果是log日志报错可能是lombok版本太低 ,可以改成

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version> <!-- 版本号可以根据需要调整 -->
    <scope>provided</scope>
</dependency>

还有就是Swagger UI无法正常显示可能是因为Springfox 2.9.2Spring Boot版本不兼容不兼容导致的依赖注入失败

删除旧版本的 Springfox 依赖 用 springdoc-openapi

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.1.0</version>
</dependency>
 

@RestController
@Slf4j
@Tag(name = "订单接口", description = "订单相关操作")
public class OrderController {@Resourceprivate OrderService orderService;@Operation(summary = "获取订单", description = "根据订单ID查询订单详情")@RequestMapping(value="order/add",method = RequestMethod.POST)public void addOrder(){orderService.addOrder();}@Operation(summary = "获取订单", description = "根据订单ID查询订单详情")@RequestMapping(value="order/{keyId}",method = RequestMethod.GET)public void getOrderById(@PathVariable Integer keyId){orderService.getOrderById(keyId);}
}

访问 Swagger UI则可正常显示

reids中文显示乱码

redis-cli -a 密码 --raw

 为什么使用默认的RedisTemplate会导致redis数据库乱码?

Java 会使用 JDK 默认的序列化机制,将对象转换为字节流。

RedisConfig中手动新建的RedisTemplate类的注释 

@Configuration
public class RedisConfig {/*** redis序列化的工具配置类,下面这个请一定开启配置* 127.0.0.1:6379> keys ** 1) "ord:102"  序列化过* 2) "\xac\xed\x00\x05t\x00\aord:102"   野生,没有序列化过* this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法* this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法* this.redisTemplate.opsForSet(); //提供了操作set的所有方法* this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法* this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法* @param lettuceConnectionFactory* @return** LettuceConnectionFactory 创建和管理 Redis 连接,作为 RedisTemplate 的底层连接提供者。*/@Beanpublic RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){// 在这个方法里手动创建一个新的 RedisTemplate 实例RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();// 将 Redis 的“连接方式”交给 RedisTemplate,让它能正确地连上 Redis 服务器。redisTemplate.setConnectionFactory(lettuceConnectionFactory);//设置key序列化方式string Redis 是一个二进制存储系统,将其转化为字符串redisTemplate.setKeySerializer(new StringRedisSerializer());//设置value的序列化方式json,使用GenericJackson2JsonRedisSerializer替换默认序列化// 将 Redis 中的 value 序列化为 JSON 格式进行存储,并在读取时反序列化为 Java 对象。redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());// 确保 RedisTemplate 的所有配置都已经设置完成,并进行必要的初始化。redisTemplate.afterPropertiesSet();return redisTemplate;}}

为了保证OrderService中调用的是我们自定义的redisTemplate,在OrderService这么调用

@Resource(name="redisTemplate")
private RedisTemplate<String, Object> redisTemplate;


http://www.hkcw.cn/article/vnNrFfckjy.shtml

相关文章

两个女首富杠起来了 医美巨头争议不断

巨子生物和华熙生物近期陷入了各自的尴尬境地。市值745亿港元的医美新贵巨子生物因一位博主的视频面临了广泛的造假质疑。与此同时,业绩下滑的玻尿酸巨头华熙生物发文痛斥券商研报“踩一捧一”,试图证明玻尿酸还未过时,但显得有些无力。一些曾鼓吹重组胶原蛋白和巨子生物的券…

屈原的老家端午要过三次 三次端午的独特庆祝

端午节作为我国最古老的节日之一,在众多习俗中,以纪念屈原影响最为广泛。屈原出生于战国时期的湖北秭归,当地不仅保留着典型的屈原故里端午习俗,还有“端午比年大”的说法。在屈原的家乡湖北秭归乐平里,这里位于山谷中央,四面群山环抱,不远处是长江的支流香溪河。古籍记…

张若昀一家三口现身伦敦过六一 异国街头温馨同游

6月1日,张若昀和唐艺昕带着女儿在伦敦游玩时被网友偶遇。一家三口走在异国街头,画面十分温馨。张若昀推着婴儿车,尽显父爱;唐艺昕穿着黑色衣服,皮肤白皙气质出众;女儿坐在小车上乖巧可爱。明星们在国内逛街容易受到关注,因此他们更倾向于在国外享受私人时光。这次张若昀…

黄石公园车祸致5华人身亡司机涉酒驾 肇事司机酒精含量超标两倍

美国警方于5月30日透露,5月初在黄石国家公园附近发生的一起导致7人死亡的交通事故中,肇事皮卡司机的血液酒精含量超过法定驾驶限值的两倍。这起事故发生在5月1日晚,地点位于美国爱达荷州黄石国家公园附近。事故造成7人死亡、多人受伤。中国驻旧金山总领馆在5月2日确认,死者…

叶童回应与陈丽君合作 虚实共生演绎许仙

5月31日晚,陈丽君与叶童在央视端午晚会上同框,共唱戏歌《浮生一白》。叶童随后在微博发文表示,这次与陈丽君的合作非常特别,虚实共生,共同演绎了这首歌曲。陈丽君也转发了这条微博,表达了与叶童老师合作的喜悦。叶童曾在经典剧作《新白娘子传奇》中成功塑造许仙一角。此次…

AI时代,大公司如何创新?

大模型时代&#xff0c;以OpenAI&#xff0c;DeepSeek为首的一些创业公司迅速崛起&#xff0c;微软、苹果、谷歌、华为等大公司跟他们相比&#xff0c;明显迟缓。所以自己最近一直在思考和观察创业公司的创新模式&#xff0c;看看有什么启发。 “强大的物种追求繁殖能力强。”是…

混沌映射(Chaotic Map)

一.定义 混沌映射是指一类具有混沌行为的离散时间非线性动力系统&#xff0c;通常由递推公式定义。其数学形式为 &#xff0c;其中 f 是非线性函数&#xff0c;θ 为参数。它们以简单的数学规则生成复杂的、看似随机的轨迹&#xff0c;是非线性动力学和混沌理论的重要研究对象…

Python训练营打卡Day41

DAY 41 简单CNN 知识回顾 1.数据增强 2.卷积神经网络定义的写法 3.batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据 4.特征图&#xff1a;只有卷积操作输出的才叫特征图 5.调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 输入…

Java中的继承

1.继承的语法 2.如何访问父类的成员变量和方法 3.super的使用 4.继承中的构造函数 5.父类和子类代码块调用顺序 6.protected的使用 7.final的使用 1.继承的语法 在日常生活的&#xff0c;我们一听到继承&#xff0c;就会想到继承家里的财产&#xff0c;所以继承的本质就…

2022年 能源统计年鉴Excel电子版

2022年 能源统计年鉴Excel电子版.ziphttps://download.csdn.net/download/2401_84585615/89772876 https://download.csdn.net/download/2401_84585615/89772876 《中国能源统计年鉴2022》是由国家统计局能源统计司主编的权威性资料书&#xff0c;全面反映了中国能源建设、生产…

牛客小白月赛117

依旧掉分场, 疯狂wa, 感觉越打越菜了.... A. 好字符串 题目描述 给你一个长度为 n 的字符串 s&#xff0c;如果一个小写字母为好字符&#xff0c;当且仅当该小写字母对应的大写字母和它同时在字符串 s 中出现 或者 同时不在字符串 s 中出现&#xff1b;而如果一个字符串为好…

【数据分析】基于Cox模型的R语言实现生存分析与生物标志物风险评估

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理生存分析画图输出图片其他标记物的分析总结系统信息介绍 分析生存数据与多种生物标志物之间的关系。它通过Cox比例风险模型来评估不同生物标志物…

“长大设计歼-90” 小孩哥、小孩姐,尽管大胆畅想

“这里面能装核弹吗?”“叔叔,这炮真能打一万发吗?你们数过吗?”“我长大以后,要设计太空战机歼-90!”小朋友们你们尽情畅想未来国防力量的新篇章将由你们去开创大朋友们且接稚子剑,斩尽暮气来孩子们的奇思妙想还需要你们守护今天,“六一”国际儿童节祝所有大朋友、小朋…

商家炮轰美团神券活动 强制补贴引发争议

一位名为“天才外卖运营课堂”的博主在抖音上表达了对美团618活动的不满,称其为“拿商家的钱,办美团的事”。该活动规定,18元的优惠券中,商家需承担12元,平台补贴6元。面对京东外卖的竞争压力,美团推出了这项举措,但结果却引发了商家和消费者的广泛争议。市场人士指出,…

把足球搞上去 江苏是认真的 “苏超”燃动全省

虎扑App紧急新增“江苏联”频道。在“苏超”第三轮于5月31日开打之前,一票难求和诸梗风行的情势深度交织,让越来越多的网友沉醉其间。玩梗层出不穷:“我从来不关心足球,这次特别关注”“我都不是球迷,我就是为了争口气”“没有假球,全是世仇”“比赛第一,友谊第十四”。…

美洛杉矶港负责人:目前进口量在缓慢回升

美洛杉矶港负责人:目前进口量在缓慢回升 但没达到原有水平美国有线电视新闻网5月30日报道称,尽管美国港口管理方期盼关税出现利好消息,但由于美国政府在关税政策层面的剧烈摇摆,即使有利好消息传出,商品也难以立即恢复流入美国港口。目前,美国港口进口量仍未恢复至原有水…

AE已禁用刷新请释放Caps Lock

用AE 是不是遇到过这样的提示&#xff0c; 不用担心。 只需要关闭大写按键即可 关闭 这个CAPS LOCK 按键即可

俄一桥梁被炸坍塌 已致数十人伤亡 爆炸装置所致

5月31日,俄罗斯布良斯克州一座桥梁发生坍塌,导致一辆从莫斯科开往该州城市克利莫沃的列车脱轨。据初步统计,事故共造成31人伤亡,其中3人不幸遇难,28人被送往医疗机构救治。媒体报道称,不明身份者在桥梁上放置了4个爆炸装置并在列车经过时引爆。桥梁被自制爆炸装置破坏,导…

66条预警齐发!浙江将迎大风暴雨 警惕次生灾害

今天雨水继续,截至6:45分,浙江共有66条气象预警,其中暴雨预警43条,大家出门一定要提高警惕。昨天下午自浙西北地区先起雨,雨量最大时段为5月31日后半夜至6月2日上午,浙中北有大雨暴雨,杭嘉湖大部、宁绍北部、衢州西北部局部有大暴雨。强对流以短时暴雨为主,最大小时雨强…

球迷冲突!巴黎球迷朝警方投掷燃烧瓶,警方发射催泪弹驱散人群

直播吧6月1日讯 在巴黎圣日耳曼夺得欧冠冠军后,法国城市博韦(Beauvais)发生巴黎圣日耳曼球迷和警察的冲突。在欧冠决赛中,巴黎圣日耳曼5-0大胜国米,成功夺冠。巴黎圣日耳曼的球迷们在法国各地庆祝,但在博韦却发生了球迷骚乱。当时一群球迷先是欢呼夺冠,然后开始侮辱马赛…