Java项目启动检测 Redis 是否启动,未启动则启动(macOS 版本)

PCL2开源启动器:Minecraft多版本隔离与Java环境精细化管理 Minecraft启动器是管理游戏运行环境的基础工具,其核心能力涵盖版本控制、Mod加载、Java运行时配置与跨平台兼容性。PCL2作为国内持续维护的开源启动器,以实例级物理隔离、符号链接资产复用和JVM参数精准绑定为技术特色,解决了传统手动管理导致的路径冲突、内存配置失效及版本兼容混乱等典型问题。它支持Fabric/Quilt双生态、内置SHA-1指纹校验与OpenGL后端切换,显著提升光影整合包稳定性与硬件适配能力。面向开发者与高级玩家,PCL2更将‘配置即代码’理念落地为可备份、可迁移、可审计的实例目 阅读详情

一、概述

启动项目时,检测macos 上 Redis 是否启动,未启动,则启动。

二、代码

/**
 * 用途: 项目启动时检查 redis,未启动则启动(开发环境)
 *
 * @author: ADAM
 * @create: 2024/04/28 14:45
 * @version: 1.0
 */
@Slf4j
@Component
@Profile("dev")
public class RedisServiceChecker implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        boolean flag = isRedisRunning();
        log.info("Redis启动状态:" + flag);
        if (!flag) {
            startRedis();
        }
    }

    /**
     * 功能:检测 redis 是否启动
     * @param
     * @return: boolean
     * @author: ADAM
     * @date: 2024/4/28 15:15
     */
    private boolean isRedisRunning() {
        boolean hasRedis = false;
        try {
            // 整个命令作为一个List传给Runtime.getRuntime().exec(),避免字符串中嵌套引号和转义字符的问题
            String[] cmd = {"/bin/bash", "-c", "ps aux | grep redis-server"};
            Process process = Runtime.getRuntime().exec(cmd);

            // 读取命令的输出和错误输出
            BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            BufferedReader stderrReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            String line;

            // 同时读取输出和错误流
            while ((line = stdoutReader.readLine()) != null || (line = stderrReader.readLine()) != null) {
                if (line != null) {
                    log.info("line: " + line); // 打印出来帮助调试,看是否有预期的输出
                    if (line.trim().contains("redis-server") && !line.trim().contains("grep redis-server")) {
                        hasRedis = true;
                        break; // 找到有效Redis进程行,可以提前结束循环
                    }
                }
            }

            // 确保流关闭
            stdoutReader.close();
            stderrReader.close();

            // 检查是否找到Redis进程
            if (hasRedis) {
                log.info("Redis服务正在运行");
            } else {
                log.info("未找到Redis服务运行");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 如果没有找到Redis进程,则认为Redis没有运行
        return hasRedis;
    }

    private void startRedis() throws IOException, InterruptedException {
        log.info("尝试启动Redis服务...");

        String redisBinaryPath = "redis-server";
        String[] command = {redisBinaryPath, "--daemonize", "yes"};

        ProcessBuilder pb = new ProcessBuilder(command);
        pb.redirectErrorStream(true); // 将错误输出重定向到标准输出,以便统一处理

        // 设置环境,以便sudo不提示输入密码(需要提前配置sudoers文件)
        Map<String, String> env = pb.environment();
        env.put("PASSWORD", "");

        // 启动进程
        Process process = pb.start();

        // 读取输出和错误流,用于日志或进一步处理
        BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        BufferedReader stderrReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

        String line;
        while ((line = stdoutReader.readLine()) != null) {
            log.info("STDOUT: " + line);
        }
        while ((line = stderrReader.readLine()) != null) {
            log.error("STDERR: " + line);
        }

        // process.waitFor()的作用是阻塞当前线程,直到子进程(即启动的Redis服务)结束。
        int exitCode = process.waitFor();

        if (exitCode == 0) {
            log.info("Redis服务启动成功!");
        } else {
            log.error("Redis服务启动失败,退出码: " + exitCode);
        }

        // 确保流关闭
        stdoutReader.close();
        stderrReader.close();
    }
}
十大C语言开源项目深度解析:从Redis到Nginx,掌握系统编程精髓 C语言作为系统编程的基石,其核心价值在于对计算机底层原理的深刻理解,包括内存管理、指针操作和并发模型等。通过研究优秀的C开源项目,开发者能够从概念层面深入技术原理,掌握高性能、高可靠性的工程实践方法。这些项目不仅展示了数据结构、网络通信和存储引擎等基础技术的实现细节,更体现了模块化设计、事件驱动和资源优化等通用架构思想。在实际应用中,无论是构建分布式缓存、Web服务器还是嵌入式系统,这些底层技术都发挥着关键作用。本文聚焦Redis、Nginx、SQLite等十个经典项目,通过分析其热词如“内存池设计”和“事 阅读详情

相关推荐

Redis 客户端编码实战:3种主流可视化工具(RDM/Another/Insight)中文显示配置

本文详细解析了RedisDesktopManager(RDM)、Another Redis Desktop Manager和RedisInsight三款主流Redis可视化工具的中文显示配置方案,解决中文乱码问题。从安装准备到连接配置、字体渲染及故障排查,提供完整的操作指南和实用技巧,帮助开发者高效管理Redis数据。

weixin_30480075的博客 360

java如何检测redis是否可用

java项目如何检测redis是否可用

学英语的程序员 3308

如何用Python实现SPEI指数计算?从数据准备到结果可视化完整指南

本文提供了一份完整的Python实现SPEI指数计算指南,涵盖从数据准备、潜在蒸散量计算到结果可视化的全流程。详细介绍了使用Thornthwaite方法计算PET、拟合三参数log-logistic分布以及标准化转换的核心算法,并提供了模块化代码和可视化方案,帮助用户构建可复用的干旱分析工具。

cola5的博客 269

Redis如何查看服务状态、关闭和启动

一、查看Redis服务状态 Linux命令: 查看redis服务进程,是否已经启动 1.ps -ef | grep redis 2.ps -aux | grep redis 3.netstat -tunple | grep 6379 4.lsof -i :6379 Redis命令: Redis/src/目录相关文件功能描述 1.redis-server redis服务器 2.redis-cli redis 命令行客户端 3.redis-benchmark redis性能...

JacaCao的博客 4万+

Cartographer从安装到实战:手把手教你运行2D/3D建图与定位

本文提供了一份详尽的Cartographer从零安装到实战应用的完整指南。内容涵盖环境准备、依赖编译、源码构建等关键步骤,并手把手指导读者运行2D/3D官方数据集进行建图与定位测试。文章深入解析了参数配置与自定义数据适配方法,帮助开发者快速掌握这一强大的实时同步定位与建图工具,并将其应用于机器人导航与自动驾驶等实际场景。

rice5的博客 952

解密GPT-5-Codex CLI安全最佳实践:从API Key保护到沙箱模式详解

本文深入解析GPT-5-Codex CLI在企业环境中的安全最佳实践,涵盖API Key全生命周期管理、沙箱模式配置及网络传输加固等核心防护策略。通过分层存储方案、动态环境变量加载和精细化权限设计,帮助开发团队构建企业级AI编程助手的安全防线,有效预防密钥泄露和未授权访问风险。

weixin_29309785的博客 587

【redis】验证redis是否正常运行以及报错解决方案

如果您在应用程序中使用 Redis 客户端库(如 Jedis、StackExchange.Redis 等),则可以编写一个简单的程序来测试 Redis 是否能够正常工作。” 错误,意味着客户端尝试向 Redis 服务器发送命令,但未提供身份验证或提供的身份验证信息不正确。如果已经进行了身份验证,但仍然出现此错误,请检查是否已正确输入了密码,并且密码是否与 Redis 配置文件中设置的一致。如果上述步骤无法解决问题,则可能需要进一步检查 Redis 的配置、网络等方面的问题。Redis 出现 “

一起加油吧 4709

S7-PLCSIM Advanced V3.0虚拟PLC组态下载失败?手把手教你解决IP地址冲突问题

本文针对S7-PLCSIM Advanced V3.0组态下载失败问题,深入剖析了IP地址冲突的根本原因。通过对比博途项目PLC、虚拟网卡及本机物理网卡的IP配置,提供了清晰的排查流程与标准化解决方案,帮助用户快速修复网络可达性问题,确保虚拟PLC仿真顺利进行。

weixin_29306261的博客 194

Mac随笔之redis命令

redis命令 1、启动redis: redis-server /redis-conf 2、关闭redis: redis-cli shutdown (在MacBook上直接使用 ctl + c 退出也可 注:是 ctl 不是 command。) 3、当设置密码后,关闭命令无效,带密码输入: redis-cli -a [password] 回车后输入:shutdown...

Stefan的博客 1209

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2248

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

java监控redis启动成功

给大家整理了一些有关【Java,监控】的项目学习资料(附讲解~~):https://edu.51cto.com/course/35714.htmlhttps://edu.51cto.com/course/30138.htmlJava监控Redis启动成功实现指南 作为一名经验丰富的开发者,我很高兴能够帮助刚入行的小白们...

weixin_42374930的博客 269

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

statistics+insight+vista+power 635

MacOS运行RuoYi-Vue

本文介绍了若依开源后台管理系统的安装配置方法。主要内容包括:1)使用Homebrew一键安装JDK、Redis、MySQL等必备工具;2)从Git仓库拉取项目代码到本地;3)配置JDK环境变量并验证安装;4)启动Redis服务和MySQL数据库;5)修改项目配置文件中的数据库连接和日志路径;6)最后启动后端项目和前端UI。文中特别强调了macOS系统下的路径配置要点,并提供了相关参考文档链接。整个安装过程详细说明了各步骤的关键点,适合开发者快速搭建若依项目开发环境。

m0_63814634的博客 560

面向可扩展的 ABAP CDS:EXTEND VIEW 全面实战与工程化指引

摘要: 本文深入讲解ABAP CDS的EXTEND VIEW功能,帮助开发者在标准或自建模型上安全扩展字段与关联。核心内容包括: 作用:避免直接修改标准CDS,通过轻量扩展添加业务字段和关联,降低维护风险。 语法要点:需定义CDS扩展实体名和Dictionary Append View名,支持添加普通字段、关联,但不允许聚合或修改原有结构。 限制:不能扩展含聚合、UNION的视图,且扩展字段需避免命名冲突。 工程实践:建议使用客户命名空间,区分结构扩展与元数据扩展,并注意功能性变更需通过其他方式实现。 示例

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 397

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

从 Homebrew 拼装到 FlyEnv 一体化:macOS 全栈开发者的本地环境终极方案

macOS 上 Homebrew 是公认的包管理神器,但当你的技术栈横跨 PHP、Java、Go、Node.js、Nginx、MySQL、Redis 时,"brew install 一切"反而变成了碎片化的噩梦——每个服务版本独立管理,日志和配置文件路径各异,站点域名靠 Valet 只能覆盖 PHP 项目,版本切换要么靠 brew link 要么靠 nvm use,哪一步出错了排查起来都是连锁反应。先从一个最简单的 PHP 项目开始,在 FlyEnv 中配置好环境,跑通项目后,再逐步迁移其他项目。

k_love_n的博客 356

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Redis常用命令一

Redis常用命令一

海阔天空的专栏 454

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

封神!FlyEnv | 一体化全栈环境管理工具,跨macOS/Windows/Linux无缝适配

作为开发者,我们的核心价值是写好代码、做好产品,而不是在环境配置上浪费时间。FlyEnv就像一个“隐形的开发助手”,默默处理好所有环境相关的后勤工作,让我们摆脱配置地狱,把更多时间和精力投入到创意和业务逻辑上。作为FlyEnv | 一体化全栈环境管理工具,它完美适配macOS/Windows/Linux三大系统,无论是个人全栈开发、多项目并行,还是团队跨平台协作,都能无缝衔接。

qq_43548590的博客 528

五、SpringBoot JPA 配置redis

redis的主要作用是用来做缓存,具体来说,我在项目中的作用是用来做token的验证。快速存取用的.配置redis mac安装redis 安装 配置 检测 启动 连接到命令行模式 配置jpa的applicationproperties配置redismac安装redis安装brew instann redis配置vim /usr/local/etc/redis.conf 修改下面这行,把redis配置

怪蜀黍 3732

Redis 数据库 入门 教程

Redis 数据库入门教程

freeking101的博客 3685

Java开发者必看:Redis从入门到生产环境实战全攻略

缓存作为提升系统性能的核心技术,其核心原理是将高频访问的数据存储在内存中,以降低对后端数据库的直接访问压力,从而显著提升响应速度与系统吞吐量。在众多缓存解决方案中,Redis凭借其丰富的数据结构、卓越的性能和原子操作特性脱颖而出,成为高并发架构中的关键技术组件。其技术价值不仅在于缓存,更在于能够优雅解决分布式锁、排行榜、会话共享等复杂场景问题。对于Java开发者而言,掌握Redis与Spring Boot的集成、Lettuce客户端的使用以及生产环境下的配置优化,是构建高性能、可扩展后端服务的必备技能。本文

weixin_33845881的博客 407

MacOS Web环境管理器 FlyEnv,非常好用

FlyEnv是一款轻量级开发环境管理工具,整合Web/数据库服务器及多语言支持(PHP/NodeJS/Java等)。相比Docker更直观高效,采用原生二进制运行,资源占用低;相较MAMP等工具更灵活,支持多源服务,配置贴近生产环境。特色包括独立环境配置、端口检测和项目模板生成,适合需要快速搭建、切换多语言项目的开发团队。通过非虚拟化方案实现高效开发调试。

mark885的博客 178

Python 异步 redis:redis-py

具有自动完成和语法突显的 Redis 命令行工具Redis 提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些 command 可以在 Linux 终端使用。在编程时,比如使用 Redis 的 python 包,这些命令都有对应的方法。下面将Redis提供的命令做一总结。1、连接操作相关的命令quit:关闭连接(connection)auth:简单密码认证2、对value操作的命令exists(key): 确认一个key是否存在del(key): 删除一个key。

freeking101的博客 8144

10款SpringBoot+Vue前后端分离项目合集:Java课设毕设实战指南

前后端分离架构是现代Web开发的主流模式,其核心原理是将前端界面与后端业务逻辑解耦,通过RESTful API进行数据交互。这种架构的技术价值在于提升开发效率、便于团队协作和实现技术栈灵活选型。在Java开发领域,SpringBoot作为轻量级框架与Vue.js的组合已成为热门技术栈,广泛应用于电商系统、权限管理等实际场景。本文基于10个完整项目案例,针对Java期末大作业和毕业设计需求,提供包含SpringBoot和Vue的全套解决方案。每个项目均配备详细文档和一键部署脚本,特别适合计算机专业学生快速掌握

weixin_34242331的博客 1788

0.8 秒启动、内存省 70%——FlyEnv:让全栈开发“起飞”的魔法盒子!

• “老项目 PHP5.6 跑在 Apache,新项目 PHP8.3 跑在 Nginx,一台 Mac 搞定,CI/CD 再也不踩坑。• “比 nvm + pyenv + rbenv 全家桶轻了 10 倍,终于不用记 20 条命令了。,FlyEnv 自动识别所需语言版本、服务端口、环境变量,真正做到“cd 进目录=环境切换”。• 极简:一键切换多版本,跨 Windows / macOS / Linux 体验完全一致。• 极省:同时跑 PHP8.3 + MySQL + Redis,仅 200 MB 内存。

baidu_19957221的博客 294

告别环境配置繁琐,FlyEnv Mac版开启高效开发新体验

这一设计让它的运行速度得到了极致提升,启动服务几乎达到“毫秒级”,同时资源占用仅为传统容器化方案的三分之一,即使是在配置一般的MacBook上,也能流畅运行多个服务,不会出现系统卡顿、内存膨胀的问题。它集成了开发者日常所需的所有工具:在编程语言方面,不仅支持PHP 5.6至8.3的全版本无缝切换,还涵盖了NodeJS、Python、Java、Go等主流语言,甚至支持Ruby、Rust等小众语言的版本管理,内置的一键扩展安装功能,能快速配置Redis、MySQLi等常用扩展,无需手动编译修改配置文件^。

qq_38746433的博客 386
上一篇: Postman 的 Pre-request Script 使用RSA加解密
下一篇: 批量给 Word 中 JSON 增加代码块样式
码上富贵
博客等级 码龄17年 1万+粉丝 135原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值