大家好,我是Spring小杨,一个有梦想的Java司机。
1.事件起因
服务器上的redis总是出问题,就是本来好好的,突然就挂了,报一大堆错误,可是每次重启就好了,很奇怪吧。
所以我想着做一个简单的小工具去定时重启。
2.taskkill命令
这个小工具的原理就是用java去执行系统命令,比如taskkill(windows系统里面的)。
比如,我现在启动了redis.exe
任务管理器里面是这样的。
我要关闭这个进程,就用taskkill命令。
taskkill /f /im redis-server.exe
可以看到,这个进程已经被干掉了。
3.如何重新启动应用
很简单,直接输入启动程序的全路径就可以了,比如我的是:
C:\Users\Administrator\Downloads\redis-64.3.0.503\redis-server.exe
启动成功!
4.导入Hutool
使用Hutool的目的是,方便我们进行定时任务的设计。
用idea创建项目
导入Hutool
在项目里面创建一个lib目录,把hutool工具包放进去,然后add As library。
我们需要用到Hutool提供的定时器工具类,需要一个配置文件,在src下面创建config目录,然后创建一个cron.setting
[com.task]
Main.test=0/1 * * * * ?
com.task是包名,Main是类名,test是方法名。
0/1 * * * * ? 是cron表达式,表示每隔1秒钟就执行一次, cron表达式 就是一种设置定时任务的专用表达式,如果不会写,可以在线生成。
Main.java 代码如下:
package com.task;
import cn.hutool.cron.CronUtil;
public class Main {
public void test(){
System.out.println("just test ...");
}
public static void main(String[] args) {
CronUtil.setMatchSecond(true);
CronUtil.start();
}
}
运行效果
5. RuntimeUtil
RuntimeUtil是hutool给我吗提供的命令行工具,它会根据系统来执行我们所设置命令。
步骤 1 命令行工具-RuntimeUtil
Hutool封装了JDK的Process类,用于执行命令行命令(在Windows下是cmd,在Linux下是shell命令)。
exec 执行命令行命令,返回Process对象,Process可以读取执行命令后的返回内容的流
execForStr 执行系统命令,返回字符串
execForLines 执行系统命令,返回行列表
步骤 2 restartRedis
之前我们只是写了一个test方法来测试,现在要编写正式的方法了,目的是定时重启redis服务器。
/**
* 重启Redis服务
*/
public void restartRedis(){
String str = RuntimeUtil.execForStr("taskkill /f /im redis-server.exe");
System.out.println(str);
//休息2秒钟,再重启Redis
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
RuntimeUtil.execForStr("C:\\Users\\Administrator\\Downloads\\redis-64.3.0.503\\redis-server.exe");
System.out.println("Redis已经成功重启");
}
步骤 3 Cron表达式
修改cron.setting,设置为每天早上6点重启Redis。
[com.task]
Main.restartRedis=0 0 6 * * *
6. 后话…
后来经过排查,原来是下载的redis有问题,重新换一个redis安装就没事了。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了