SpringBoot+Redis完成应用程序内存数据现场恢复

springboot第八课:Redis持久化、集群 一、Redis的持久化 1 什么是持久化? 把内存中的数据持久化到磁盘。这个过程就是持久化。 当redis启动时会从磁盘上读取数据并加载到内存。 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上 阅读详情

应用场景

最近工作中碰到了一个业务场景,在一条条产生数据,并对数据进行处理的时候,需要对比当前批次和上一批数据,然后进行一些处理。但是碰到代码更新需要手动停止项目,或者程序异常退出等情况,内存中用作对比的上一批次的历史数据会丢失。这样会导致再重新启动项目时,又是新的开始,会导致数据不准确,所以需要对停止前的数据进行落地,在程序重新启动的时候,再次加载到内存中。

涉及知识点

  • ShutDownHook,Java提供的钩子,可以接收信号,在程序停止时,启动指定的线程。
  • Spring 对集合,构造函数的注入,以及注入顺序
  • 如何在静态方法中进行注入
  • 如何在项目初始化的时候执行操作
  • 如何将json字符串解析为复杂格式数据

下面我们针对上述知识点进行简单的讲解

ShutDownHook

定义

Java 提供名为ShutdownHook 的钩子,能够允许你在程序正常退出前执行特定代码。 一般用于清理资源、输出日志、保护当前正在执行的任务的执行。ShutdownHook 是一个不立刻执行的Thread,当程序正常退出时它被执行,可以同时存在多个ShutdownHook。

触发条件

  1. 程序正常退出
  2. 使用System.exit()
  3. 终端使用Ctrl+C触发的中断
  4. 系统关闭
  5. 使用Kill pid命令干掉进程,其中kill -9 不会触发,针对windows taskkill -pid xxx -F 也不会触发

使用示例

//使用addShutdownHook()方法来注册
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            RedisService redisService = DemoApplication.context.getBean(RedisService.class);
            redisService.insertData();
        }));

使用addShutDownHook() 方法来注册,添加一个线程,执行你需要做的操作,这里我们是执行数据插入到Redis的操作。

应用

在SpringBoot的源码中有大量用到shutDownHook的地方,比如释放数据库连接,回收系统资源等。

Spring的自动注入

相信大家对自动注入应该很熟悉了,我们常用的写法就是在某个需要引用到的地方,对被引用的类加上@Service注解,在引用处声明一个对象,加上@AutoWired注解,Spring就会自动帮我们创建并注入我们需要的Bean。

对集合进行注入

但是还有另外一种使用场景,Spring会自动对集合对象,如Set,Map,List进行注入。例如:

@Service
public class RedisService {
    
SpringBoot与Redis整合实战教程 SpringBoot是由Pivotal团队提供的全新框架,旨在简化新Spring应用的初始搭建以及开发过程。它使用“约定优于配置”的原则,帮助开发者快速启动和运行Spring应用。在SpringBoot配置类中,可以创建一个RedisTemplate Bean,对其序列化策略进行自定义。@Bean// 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值// 设置value的序列化规则和反序列化规则。 阅读详情

相关推荐

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程

本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。

weixin_29234509的博客 124

解决LangChain4j报错HTTP/1.1 header parser received no bytes

当使用调用自己部署的大模型服务时报错: 报错信息如下:

weixin_44455388的博客 2336

DIY天文摄影:如何用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜(附详细步骤)

本文为天文摄影爱好者提供了一份详尽的DIY指南,介绍如何使用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜,将其改造为高灵敏度单色相机。文章深入剖析了NMP溶剂的作用原理与关键风险,并系统性地拆解了从材料准备、分步操作到后期验证的完整实践流程,旨在帮助具备动手能力的爱好者实现深空天体摄影的进阶目标。

w3x4y的博客 308

使用3dmax Morpher制作Unity表情动画

关于游戏人物的面部表情动画 方案一:如果面部骨骼数丰富的话,可以直接做骨骼动画 方案二:采用变形器(3dmax是Morpher,maya是blendshape)修改相应通道的权重值来做表情动画 本文简述方案二的做法。 说明:本文截图中3dsMax版本为2017。笔者第一次使用3dsMax,欢迎指正。 3dmax中导入人物模型,选择需要变形的对象,即head。当前对象附带skin信息。 ...

写作帮助思考 2万+

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 435

【Coze 扣子案例】第 23 期・商业篇:一键获取精准商机,自动化招标信息查询与分析

通过地区和项目类型等多维度组合查询全国招标信息网数据,实现招标公告的快速定位。自动解析招标公告内容,提取关键信息,并生成结构化摘要。帮助企业高效获取精准商机,提升市场竞争力,降低人工成本,解决 “信息过载” 与 “精准匹配难” 的双重问题。

weixin_72689845的博客 1927

硬件即代码:用软件工程思维拆解F450无人机装配的模块化设计哲学

本文探讨了如何用软件工程思维重构DJI-F450无人机的模块化设计,将硬件装配提升为可编程系统。通过硬件抽象层、控制系统分层架构和扩展槽位设计模式,展示了无人机装配的模块化哲学,并结合实际案例说明如何优化性能与安全性。

weixin_29294975的博客 386

手把手教你学Simulink——基于Simulink的机械臂正运动学仿真建模示例

机械臂正运动学概述正运动学的核心在于根据每个关节的角度值,通过坐标变换(如DH参数法或齐次变换矩阵)计算出末端执行器相对于基座的位置和姿态。常用的数学工具包括旋转矩阵、平移向量以及它们组合而成的齐次变换矩阵。仿真目标设计并实现一个机械臂正运动学模型。输入关节角度,输出末端执行器的位置和姿态。分析不同关节角度下的机械臂位置变化。假设我们有一个简单的3自由度(DOF)平面机械臂,其各关节的长度分别为l1l1​、l2l2​和l3l3​。在Simulink中,可以使用。

MHD0815的博客 359

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: SpringBoot在静态方法中使用注入Bean
下一篇: consul异地多数据中心以及集群部署方案
徐光耀
博客等级 码龄12年 19粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值