当前位置: 首页 > news >正文

Redis再次开源!reids8.0.0一键安装脚本分享

准备工作

1. 下载 Redis 8 安装包
# Redis 8.0.0 示例(请替换为实际版本)
http://download.redis.io/releases/redis-8.0.0.tar.gz

在这里插入图片描述

一、脚本内容:

#!/usr/bin/python
# -*- coding: UTF-8 -*-import os
import time
import shutil
import subprocessREDIS_VERSION = "redis-8.0.0"
REDIS_TAR = REDIS_VERSION + ".tar.gz"  # 改为Python 2兼容的字符串拼接
INSTALL_DIR = "/usr/local/redis"
BACKUP_DIR = os.path.join(INSTALL_DIR, "backups")
BACKUP_SCRIPT = os.path.join(INSTALL_DIR, "backup_redis.sh")def run_command(cmd, error_msg):"""执行命令并检查结果,失败时抛出异常(Python 2兼容版本)"""ret = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)output, error = ret.communicate()if ret.returncode != 0:raise Exception("%s (code: %d)\nError output: %s" % (error_msg, ret.returncode, error))def install_dependencies():"""安装依赖"""try:run_command("rpm -Uvh --force --nodeps ./gcc/*.rpm", "依赖安装失败,请检查gcc RPM包是否存在")except Exception as e:print "\033[31m错误:%s\033[0m" % str(e)raisedef install_redis():"""安装Redis"""try:# 解压if not os.path.exists(REDIS_TAR):raise Exception("Redis安装包 %s 不存在" % REDIS_TAR)run_command("tar -zxvf " + REDIS_TAR, "解压Redis失败")# 编译安装os.chdir(REDIS_VERSION)run_command("make MALLOC=libc", "编译Redis失败")os.chdir("src")run_command("make install", "安装Redis失败")# 创建安装目录if os.path.exists(INSTALL_DIR):shutil.rmtree(INSTALL_DIR)os.makedirs(INSTALL_DIR)# 复制文件run_command("cp -R ./* " + INSTALL_DIR, "复制文件失败")run_command("cp ../redis.conf " + INSTALL_DIR + "/", "复制配置文件失败")# 修改配置conf_path = os.path.join(INSTALL_DIR, "redis.conf")with open(conf_path, "r") as f:content = f.read()content = content.replace("daemonize no", "daemonize yes")content = content.replace("bind 127.0.0.1 -::1", "bind 0.0.0.0")content = content.replace("# requirepass foobared", "requirepass 123456")with open(conf_path, "w") as f:f.write(content)# 启动Redisrun_command(INSTALL_DIR + "/redis-server " + INSTALL_DIR + "/redis.conf", "启动Redis服务失败")except Exception as e:print "\033[31m错误:%s\033[0m" % str(e)raisedef setup_backup():"""配置数据备份策略(Python 2兼容版本)"""try:# 创建备份目录if not os.path.exists(BACKUP_DIR):os.makedirs(BACKUP_DIR)# 创建备份脚本backup_script = """#!/bin/bash
BACKUP_DIR="%s"
DATE=$(date +%%Y%%m%%d_%%H%%M%%S)
# 备份RDB文件
cp %s/dump.rdb "$BACKUP_DIR/dump_$DATE.rdb" 2>/dev/null || echo "无RDB文件可备份"
# 删除7天前的备份
find "$BACKUP_DIR" -name 'dump_*.rdb' -mtime +7 -exec rm -f {} \\;
""" % (BACKUP_DIR, INSTALL_DIR)with open(BACKUP_SCRIPT, "w") as f:f.write(backup_script)os.chmod(BACKUP_SCRIPT, 0755)# 添加cron任务cron_job = "0 2 * * * root " + BACKUP_SCRIPT + "\n"with open("/etc/cron.d/redis_backup", "w") as f:f.write(cron_job)except Exception as e:print "\033[33m警告:备份配置失败 - %s\033[0m" % str(e)def detect_service():"""检测服务是否运行(Python 2兼容版本)"""try:time.sleep(3)result = subprocess.Popen("pgrep -f redis-server", shell=True, stdout=subprocess.PIPE)output = result.communicate()[0]return result.returncode == 0except:return Falsedef prompt_success():"""安装成功提示(Python 2兼容版本)"""print """\033[5;32;40m 恭喜%s安装成功! \033[0m使用前注意:Redis已启动,端口:6379,绑定所有网卡,密码:123456防火墙需放行6379端口,临时关闭防火墙命令:systemctl stop firewalld安装路径:%s启动命令:%s/redis-server %s/redis.conf配置文件:%s/redis.conf数据备份策略:每日凌晨2点自动备份RDB文件至:%s保留最近7天的备份,旧备份自动删除备份脚本位置:%s""" % (REDIS_VERSION, INSTALL_DIR, INSTALL_DIR, INSTALL_DIR, INSTALL_DIR, BACKUP_DIR, BACKUP_SCRIPT)def prompt_fail():"""安装失败提示(Python 2兼容版本)"""print """\033[5;31;40m 安装失败,请检查错误信息! \033[0m"""if __name__ == '__main__':try:install_dependencies()install_redis()setup_backup()if detect_service():prompt_success()else:print "\033[31m错误:Redis进程未检测到,可能启动失败\033[0m"prompt_fail()except Exception as e:prompt_fail()

二、执行步骤

[root@myoracle redis8]# chmod +x redis8.py
[root@myoracle redis8]# ./redis8.py 

在这里插入图片描述
在这里插入图片描述

相关文章:

  • Web前端技术栈:从入门到进阶都需要学什么内容
  • string--OJ3
  • 数据智能重塑工业控制:神经网络在 MPC 中的四大落地范式与避坑指南
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.29)
  • 第16章 Python数据类型详解:列表(List)与运维开发实践
  • Cloudera CDP 7.1.3 主机异常关机导致元数据丢失,node不能与CM通信
  • 大数据技术全景解析:Spark、Hadoop、Hive与SQL的协作与实战
  • Qt开发经验:回调函数的线程归属问题及回调函数中更新控件的问题
  • ASP.NET MVC4 技术单选及多选题目汇编
  • (九)PMSM驱动控制学习---分流电阻采样及重构
  • 2:点云处理—3D相机开发
  • 追踪大型语言模型的思想(上)(来自针对Claude的分析)
  • 鸿蒙开发——1.ArkTS声明式开发(UI范式基本语法)
  • ClimateCatcher专用CDS配置教程
  • 如何在自己的服务器上部署静态网页并通过IP地址进行访问
  • 电池管理系统BMS三级架构——BMU、BCU和BAU详解
  • 前端面试测试题目(一)
  • 密码学系列 - SR25519与ED25519
  • English of Root for May 7th
  • C++ 日志系统实战第四步:设计与代码实现详解
  • 印度最新发声:对所有敌对行动均予以反击和回应,不会升级冲突
  • 图集︱“中国排面”威武亮相
  • 白宫启动“返乡计划” ,鼓励非法移民自愿离开美国
  • 纽约大学朗格尼医学中心的转型带来哪些启示?
  • A股低开高走全线上涨:军工股再度领涨,两市成交12934亿元
  • 商务部再回应中美经贸高层会谈