CentOS安装Redis教程-shell脚本一键安装配置

文章目录

  • 前言
  • 一、Redis单机版安装教程
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 执行脚本
  • 二、Redis扩展集群版安装教程
    • 1. 安装Redis单机版
    • 2. 复制脚本
    • 3. 增加执行权限
    • 4. 执行脚本
    • 5. 测试
    • 6. redis_cluster.sh 命令
      • 6.1 启动Redis扩展集群
      • 6.2 停止Redis扩展集群
      • 6.3 查看Redis扩展集群节点信息
      • 6.4 查看Redis扩展集群实时日志
      • 6.5 清除Redis扩展集群目录所有数据
      • 6.6 清除Redis扩展集群目录日志数据
  • 总结


前言

本文将介绍如何安装和配置Redis单机版和扩展集群版。首先,我们会详细说明如何安装Redis单机版,并提供了相应的脚本来简化安装过程。然后,我们会介绍如何在已经安装好的Redis单机版基础上搭建扩展集群,并提供了相应的脚本来帮助您完成这一步骤。最后,我们还会演示一些测试命令以验证集群是否正常工作。


一、Redis单机版安装教程

1. 复制脚本

首先,将以下脚本内容复制并保存为/tmp/install_redis.sh文件。

#!/bin/bash# 安装版本
redis_version="6.2.7"
# 安装目录
#redis_installDir="/opt/module/redis"
redis_installDir="/opt/bigdata/redis"install_redis() {local version=$1local installDir=$2local redisconf_file=$installDir/redis-$version/redis.conf# 安装工具包yum -y install epel-release gcc make tcl# 下载地址local downloadUrl="http://download.redis.io/releases/redis-$version.tar.gz"if [ -z "$(command -v wget)" ]; thenyum -y install wgetif [ $? -eq 0 ]; thenecho "wget安装完成"elseecho "wget安装失败,请检查"exit 1fifiif [ ! -d "${installDir}" ]; thenmkdir -p "${installDir}"if [ $? -eq 0 ]; thenecho "安装目录${installDir}已创建"elseecho "请确保您有足够的权限来创建目录,请增加权限后再次执行"exit 1fifiif [ ! -f "/tmp/redis-$version.tar.gz" ] ; thenwget "$downloadUrl" -P /tmpif [ $? -eq 0 ]; thenecho "redis-$version.tar.gz下载成功"elseecho "redis-$version.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$downloadUrl"exit 1fielseecho "/tmp/redis-$version.tar.gz文件已存在"fiif [ -d "${installDir}/redis-$version" ]; thenecho "${installDir}/redis-$version 已存在,正在删除..."rm -rf "${installDir}/redis-$version"fitar -zxvf "/tmp/redis-$version.tar.gz" -C "${installDir}"if [ $? -eq 0 ]; thenecho "redis-$version.tar.gz解压成功"elseecho "redis-$version.tar.gz解压失败,请查看异常信息后重试"exit 1fi# 编译和安装cd ${installDir}/redis-$versionmake && make installsed -i "s|daemonize no|daemonize yes|" "$redisconf_file"sed -i "s|bind 127.0.0.1 -::1|bind 127.0.0.1 -::1\nbind 0.0.0.0|" "$redisconf_file"sed -i "s|# requirepass foobared|# requirepass foobared|" "$redisconf_file"#  sed -i "s|port 6379|port 6379|" "$redisconf_file"
#  sed -i "s|# cluster-enabled yes|cluster-enabled yes|" "$redisconf_file"
#  sed -i "s|# cluster-config-file nodes-6379.conf|cluster-config-file nodes.conf|" "$redisconf_file"
#  sed -i "s|# cluster-node-timeout 15000|cluster-node-timeout 5000|" "$redisconf_file"
#  sed -i "s|appendonly no|appendonly yes|" "$redisconf_file"echo "redis 单机版下载、安装、配置完成"echo "redis安装目录:${installDir}/redis-$version"echo "单机版 进入 redis 交互界面命令:redis-cli -h $(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+') -p 6379"echo "集群版 进入 redis 交互界面命令:redis-cli -h $(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+') -c -p 30001"#  mkdir -p "${installDir}/redis-$version/cluster-test"
#  for cluster_dir in {7000..7005}
#  do
#    local create_dir="${installDir}/redis-$version/cluster-test/$cluster_dir"
#    mkdir -p "$create_dir"
#    cp "$redisconf_file" "$create_dir"
#    sed -i "s|port 6379|port $cluster_dir|" "$create_dir/redis.conf"
#    redis-server "$create_dir/redis.conf"
#    echo "$cluster_dir 端口的redis启动成功"
#  done#  local dir=${installDir}/redis-$version/utils/create-cluster
#  sed -i "s|CLUSTER_HOST=127.0.0.1|CLUSTER_HOST=192.168.145.105|" "$dir/create-cluster"
#  sed -i "s|PROTECTED_MODE=yes|PROTECTED_MODE=no|" "$dir/create-cluster"
#  $dir/create-cluster start
#  $dir/create-cluster create}install_redis "$redis_version" "$redis_installDir"exit 0

2. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

chmod a+x /tmp/install_redis.sh

3. 执行脚本

执行以下命令,运行脚本开始下载、安装和配置Redis。

/tmp/install_redis.sh

请等待安装完成,如有异常会有提示。

成功如下图所示:

在这里插入图片描述


二、Redis扩展集群版安装教程

1. 安装Redis单机版

要安装Redis扩展集群版,要先安装好单机版。

2. 复制脚本

首先,将以下脚本内容复制并保存为/opt/bigdata/redis/redis-6.2.7/redis_cluster.sh文件。

#!/bin/bash# 安装版本
version="6.2.7"
# 安装目录
#installDir="/opt/module/redis"
installDir="/opt/bigdata/redis"
# Settings
BIN_PATH="${installDir}/redis-$version/src/"
CLUSTER_HOST=$(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+')
PORT=30000
TIMEOUT=2000
NODES=6
REPLICAS=1
PROTECTED_MODE=yes
ADDITIONAL_OPTIONS=""
BIND='0.0.0.0 -::1'
#REQUIREPASS="redisroot"# 您可能需要将上述配置参数放入config.sh中,以便执行以下命令
# 覆盖默认值而不修改此脚本。if [ -a config.sh ]
thensource "${installDir}/redis-$version/utils/create-cluster/config.sh"
fi# 结束端口
ENDPORT=$((PORT+NODES))if [ "$1" == "start" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))port_dir=${installDir}/redis-$version/redis_cluster/$PORTmkdir -p "$port_dir"echo "Starting $PORT"cd $port_dir
#        $BIN_PATH/redis-server --bind $BIND --requirepass $REQUIREPASS --port $PORT  --protected-mode $PROTECTED_MODE --cluster-enabled yes --cluster-config-file "$port_dir/nodes-${PORT}.conf" --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename "appendonly-${PORT}.aof" --dbfilename "$port_dir/dump-${PORT}.rdb" --logfile "$port_dir/${PORT}.log" --daemonize yes "${ADDITIONAL_OPTIONS}"
#        $BIN_PATH/redis-server --bind $BIND --requirepass $REQUIREPASS --port $PORT  --protected-mode $PROTECTED_MODE --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes ${ADDITIONAL_OPTIONS}$BIN_PATH/redis-server --bind $BIND --port $PORT  --protected-mode $PROTECTED_MODE --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes ${ADDITIONAL_OPTIONS}doneexit 0
fiif [ "$1" == "create" ]
thenHOSTS=""while [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))HOSTS="$HOSTS $CLUSTER_HOST:$PORT"doneOPT_ARG=""if [ "$2" == "-f" ]; thenOPT_ARG="--cluster-yes"fi$BIN_PATH/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS $OPT_ARGexit 0
fiif [ "$1" == "stop" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))echo "Stopping $PORT"$BIN_PATH/redis-cli -p $PORT shutdown nosave
#        $BIN_PATH/redis-cli -p $PORT shutdowndoneexit 0
fiif [ "$1" == "watch" ]
thenPORT=$((PORT+1))while [ 1 ]; docleardate$BIN_PATH/redis-cli -p $PORT cluster nodes | head -30sleep 1doneexit 0
fiif [ "$1" == "tail" ]
thenINSTANCE=$2PORT=$((PORT+INSTANCE))tail -f "${installDir}/redis-$version/redis_cluster/$PORT/${PORT}.log"exit 0
fiif [ "$1" == "tailall" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))log_dir="${installDir}/redis-$version/redis_cluster/$PORT/$PORT.log"tail -f "$log_dir"doneexit 0
fiif [ "$1" == "call" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))$BIN_PATH/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9doneexit 0
fihost="$(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+')"
if [ "$1" == "clean" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))port_dir=${installDir}/redis-$version/redis_cluster/$PORTrm -rf $port_dir/*.logrm -rf $port_dir/appendonly*.aofrm -rf $port_dir/dump*.rdbrm -rf $port_dir/nodes*.confecho "flushdb" | redis-cli -c -h "$host" -p $PORTecho "cluster reset" | redis-cli -c -h "$host" -p $PORTdoneexit 0
fiif [ "$1" == "clean-logs" ]
thenwhile [ $((PORT < ENDPORT)) != "0" ]; doPORT=$((PORT+1))port_dir=${installDir}/redis-$version/redis_cluster/$PORTrm -rf $port_dir/*.logdoneexit 0
fiecho "Usage: $0 [start|create|stop|watch|tail|clean|call]"
echo "start       -- Launch Redis Cluster instances."
echo "create [-f] -- Create a cluster using redis-cli --cluster create."
echo "stop        -- Stop Redis Cluster instances."
echo "watch       -- Show CLUSTER NODES output (first 30 lines) of first node."
echo "tail <id>   -- Run tail -f of instance at base port + ID."
echo "tailall     -- Run tail -f for all the log files at once."
echo "clean       -- Remove all instances data, logs, configs."
echo "clean-logs  -- Remove just instances logs."
echo "call <cmd>  -- Call a command (up to 7 arguments) on all nodes."

3. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

cd /opt/bigdata/redis/redis-6.2.7
chmod a+x ./redis_cluster.sh

4. 执行脚本

执行以下命令,运行脚本开始创建Redis扩展集群的目录。

./redis_cluster.sh start

如下图所示:

在这里插入图片描述
执行以下命令创建Redis扩展集群。

echo yes | ./redis_cluster.sh create

成功的开始和结束的截图如下图所示:

在这里插入图片描述

5. 测试

执行以下命令进入Redis扩展集群交互界面。

redis-cli -h 192.168.145.105 -c -p 30001

使用命令测试是否正常,如下图所示。

在这里插入图片描述

6. redis_cluster.sh 命令

6.1 启动Redis扩展集群

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh start

6.2 停止Redis扩展集群

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh stop

6.3 查看Redis扩展集群节点信息

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh watch

6.4 查看Redis扩展集群实时日志

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh tail 1

6.5 清除Redis扩展集群目录所有数据

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh clean

6.6 清除Redis扩展集群目录日志数据

cd /opt/bigdata/redis/redis-6.2.7
./redis_cluster.sh clean-logs

总结

通过本教程,您学习到了如何在Linux系统上进行Redis的安装和配置。首先,您学习到了如何使用脚本自动下载、编译和安装Redis单机版,并对其进行必要的配置修改以满足实际需求。然后,在已经部署好的单机版基础上,您学习到了如何使用另一个脚本创建并启动一个具有多个节点(主节点+从节点)组成的扩展集群。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

参考链接:

  • https://redis.io/docs/management/scaling/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写rpc和redis

rpc框架搭建 consumer 消费者应用 provider 提供的服务 Provider-common 公共类模块 rpc 架构 service-Registration 服务发现 nacos nacos配置中心 load-balancing 负载均衡 redis-trench 手写redis实现和链接 package com.trench.protocol;import com.trench.enumUtil.Redis…

AI编译器的前端优化策略

背景 工作领域是AI芯片工具链相关&#xff0c;很多相关知识的概念都是跟着项目成长建立起来&#xff0c;但是比较整个技术体系在脑海中都不太系统&#xff0c;比如项目参与中涉及到了很多AI编译器开发相关内容&#xff0c;东西比较零碎&#xff0c;工作中也没有太多时间去做复盘…

Docker容器(自定义镜像,Dockerfile,网桥,DockerCompose)

自定义镜像 镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。 构建步骤 镜像结构 Dockerfile 它是一个文本文件&#xff0c;包含很多指令&#xff0c;用指令来说明要执行什么操作来构建镜像。 官网&am…

序列化和反序列化

目录 字节流序列化反序列化区别示例字节流需要注意的问题 字节流 字节流在计算机科学中是一种常见的数据结构&#xff0c;它是一系列字节的序列。字节流通常用来处理输入和输出的数据&#xff0c;例如读写文件、网络通信等。一个字节由8位二进制数字组成&#xff0c;可以代表一…

jQuery HTML - 获取 —— W3school 详解 简单易懂(十一)

jQuery 获得内容和属性 jQuery ChainingjQuery 设置 jQuery 拥有可操作 HTML 元素和属性的强大方法。 jQuery DOM 操作 jQuery 中非常重要的部分&#xff0c;就是操作 DOM 的能力。 jQuery 提供一系列与 DOM 相关的方法&#xff0c;这使访问和操作元素和属性变得很容易。 …

【漏洞复现】友讯D-Link路由器弱口令漏洞

Nx01 产品简介 友讯电子设备&#xff08;上海&#xff09;有限公司于2002年8月13日成立。公司经营范围包括区内以路由器、网络卡、集线器、交换器、转换器等。 Nx02 漏洞描述 友讯D-Link路由器存在默认口令(admin/admin)&#xff0c;攻击者可利用该漏洞获取敏感信息。 Nx03 产…

windows .vscode的json文件配置 CMake 构建项目 调试窗口中文设置等

一、CMake 和 mingw64的安装和环境配置 二、tasks.json和launch.json文件配置 tasks.json {"version": "2.0.0","options": {"cwd": "${workspaceFolder}/build"},"tasks": [{"type": "shell&q…

openssl3.2/test/certs - 074 - CT entry

文章目录 openssl3.2/test/certs - 074 - CT entry概述笔记setup074.shsetup074_sc1.shsetup074_sc2.shsetup074_sc3.shEND openssl3.2/test/certs - 074 - CT entry 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 setup074.sh #! /bin/bash# \file setup074.sh# o…

软件设计师——计算机网络(四)

&#x1f4d1;前言 本文主要是【计算机网络】——软件设计师——计算机网络的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1…

react中优化类名写法(类似与vue的动态class对象方式)

安装和引入方式 npm install classnamesimport classNames form classsnames//render 方法中&#xff0c;需要动态className的地方直接参照上图使用

【NodeJS JS】动态加载字体的各方式及注意事项;

首先加载字体这个需求基本只存在于非系统字体&#xff0c;系统已有字体不需要加载即可直接使用&#xff1b; 方案1&#xff1a;创建 style 标签&#xff0c;写入 font-face{font-family: xxx;src: url(xxx)} 等相关字体样式&#xff1b;将style标签添加到body里&#xff1b;方…

手机操作系统Android

▶1.Android系统概述 Andaid(读[安卓)由Coosle公司和开放手机联盟共同开发&#xff0c;它是基于Lmx内核的开源操作系统。Andtoid主要用于移动设备&#xff0c;如智能手机和平板计算机。2008年发布了第一部Andtoid智能手机&#xff0c;以后Android逐渐扩展到平板计算机、电视、…

C++学习| QT下载安装、VS配置QT

QT介绍 Qt&#xff1a;1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架。 应用&#xff1a;既可以开发GUI程序&#xff0c;也可用于开发非GUI程序&#xff0c;比如控制台工具和服务器。 对比MFC&#xff1a;MFC和QT两者都是用于C图形用户界面应用程序。 跨平…

c#反射用法

在 C# 中&#xff0c;反射是一种能够在运行时检查类型信息、访问属性和调用方法的机制。通过反射&#xff0c;你可以动态地操作类型、对象和程序集&#xff0c;而无需在编译时知道这些类型的具体信息。 反射提供了一组 API&#xff0c;可以让你在运行时获取和操作类型的信息。…

念念不忘智能编程,必有回响CodeArts Snap

开发者的碎碎念 之前在【我与ModelArts的故事】的文章里&#xff0c;分享过我学习新技术的经历&#xff0c;主要有&#xff1a; 自主学习&#xff0c;比如自学Python&#xff1b;借助华为云的产品边用边学。 在围着"编程学习"这座城池&#xff0c;外围来来回回转了…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM平台编程第六天-文件系统(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1VUc8cGI7bTtXuGepZZY3Ng?pwd1688 提取码&#xff1a;1688 1、windows和linux之间可以&#xff0c;利用samb服务器共享 2、linux和linux之间可以利用nfs共享 3、windows和linux还可以利用telnet &#xff1a; # telnetd WINDOWS上…

适用于 Windows 的 10 个最佳数据恢复工具学习

在数字时代&#xff0c;数据就是一切。从珍贵的家庭照片和重要的工作文档到最喜欢的音乐和电影&#xff0c;我们的生活越来越多地存储在各种设备上。系统崩溃、意外删除或恶意病毒都可能使您的宝贵数据瞬间消失。这就是数据恢复工具的用武之地。 10 个最佳数据恢复工具 这些软…

3 JS类型 值和变量

计算机对value进行操作。 value有不同的类型。每种语言都有其自身的类型集合。编程语言的类型集是该编程语言的基本特性。 value需要保存一个变量中。 变量的工作机制是变成语言的另一个基本特性。 3.1概述和定义 JS类型分为&#xff1a; 原始类型和对象类型。 原始类型&am…

消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)

在一个字符串 S 中&#xff0c;如果 SiSi−1 且 Si≠Si1&#xff0c;则称 Si 和 Si1 为边缘字符。 如果 Si≠Si−1 且 SiSi1&#xff0c;则 Si−1和 Si 也称为边缘字符。 其它的字符都不是边缘字符。 对于一个给定的串 S&#xff0c;一次操作可以一次性删除该串中的所有边缘…

python爬虫实战——自动话获取淘宝商品数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: python 3.8 pycharm 专业版 三方库: DrissionPage >>> pip install DrissionPage 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) …