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

news2024/12/22 14:24:15

文章目录

  • 前言
  • 一、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=$1
  local installDir=$2
  local 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)" ]; then
    yum -y install wget
    if [ $? -eq 0 ]; then
      echo "wget安装完成"
    else
      echo "wget安装失败,请检查"
      exit 1
    fi
  fi
  if [ ! -d "${installDir}" ]; then
    mkdir -p "${installDir}"
    if [ $? -eq 0 ]; then
      echo "安装目录${installDir}已创建"
    else
      echo "请确保您有足够的权限来创建目录,请增加权限后再次执行"
      exit 1
    fi
  fi
  if [ ! -f "/tmp/redis-$version.tar.gz" ] ; then
    wget "$downloadUrl" -P /tmp
    if [ $? -eq 0 ]; then
      echo "redis-$version.tar.gz下载成功"
    else
      echo "redis-$version.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$downloadUrl"
      exit 1
    fi
  else
    echo "/tmp/redis-$version.tar.gz文件已存在"
  fi
  if [ -d "${installDir}/redis-$version" ]; then
    echo "${installDir}/redis-$version 已存在,正在删除..."
    rm -rf "${installDir}/redis-$version"
  fi
  tar -zxvf "/tmp/redis-$version.tar.gz" -C "${installDir}"
  if [ $? -eq 0 ]; then
    echo "redis-$version.tar.gz解压成功"
  else
    echo "redis-$version.tar.gz解压失败,请查看异常信息后重试"
    exit 1
  fi
  # 编译和安装
  cd ${installDir}/redis-$version
  make && make install

  sed -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 ]
then
    source "${installDir}/redis-$version/utils/create-cluster/config.sh"
fi

# 结束端口
ENDPORT=$((PORT+NODES))

if [ "$1" == "start" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        port_dir=${installDir}/redis-$version/redis_cluster/$PORT
        mkdir -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}
    done
    exit 0
fi

if [ "$1" == "create" ]
then
    HOSTS=""
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        HOSTS="$HOSTS $CLUSTER_HOST:$PORT"
    done
    OPT_ARG=""
    if [ "$2" == "-f" ]; then
        OPT_ARG="--cluster-yes"
    fi
    $BIN_PATH/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS $OPT_ARG
    exit 0
fi

if [ "$1" == "stop" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        echo "Stopping $PORT"
#        $BIN_PATH/redis-cli -p $PORT shutdown nosave
        $BIN_PATH/redis-cli -p $PORT shutdown
    done
    exit 0
fi

if [ "$1" == "watch" ]
then
    PORT=$((PORT+1))
    while [ 1 ]; do
        clear
        date
        $BIN_PATH/redis-cli -p $PORT cluster nodes | head -30
        sleep 1
    done
    exit 0
fi

if [ "$1" == "tail" ]
then
    INSTANCE=$2
    PORT=$((PORT+INSTANCE))
    tail -f "${installDir}/redis-$version/redis_cluster/$PORT/${PORT}.log"
    exit 0
fi

if [ "$1" == "tailall" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        log_dir="${installDir}/redis-$version/redis_cluster/$PORT/$PORT.log"
        tail -f "$log_dir"
    done
    exit 0
fi

if [ "$1" == "call" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        $BIN_PATH/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
    done
    exit 0
fi

if [ "$1" == "clean" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        port_dir=${installDir}/redis-$version/redis_cluster/$PORT
        rm -rf $port_dir/*.log
        rm -rf $port_dir/appendonly*.aof
        rm -rf $port_dir/dump*.rdb
        rm -rf $port_dir/nodes*.conf
    done
    exit 0
fi

if [ "$1" == "clean-logs" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        port_dir=${installDir}/redis-$version/redis_cluster/$PORT
        rm -rf $port_dir/*.log
    done
    exit 0
fi

echo "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.coloradmin.cn/o/1408470.html

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

相关文章

在虚拟时空对话邓中亮院士,元宇宙访谈节目强势出圈

​​2023年12月&#xff0c;由米果集团、浙江省元宇宙产业基地联合出品的《科技领军人物的思维模式解析》访谈节目上线。在节目制作过程中&#xff0c;主持人对话“国际欧亚科学院院士、北京邮电大学邓中亮教授”&#xff0c;全程使用蓝海创意云的“vLive虚拟直播”系统进行节目…

Dubbo 3.x源码(16)—Dubbo服务发布导出源码(5)

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo 3.x源码(15)—Dubbo服务发布导出源码(4)&#xff0c;也就是Dubbo远程服务导出export方法的上半部分&#xff0c;也就是doLocalExport源码&#xff0c;将会得到一个Exporter。 现在我们…

LLM之RAG理论(七)| 高提升RAG检索的四种方法

​ RAG两大核心组件&#xff1a;检索和生成。本文将总结四种提高RAG系统检索质量的技术&#xff1a;1&#xff09;子问题查询引擎&#xff08;来自LlamaIndex&#xff09;&#xff0c;2&#xff09;RAG-Fusion、3&#xff09;RAG-end2end和4&#xff09;LoRA微调。 一、L…

司铭宇老师:门店经理培训:如何成为一位卓越的门店经理

门店经理培训&#xff1a;如何成为一位卓越的门店经理 在激烈的市场竞争中&#xff0c;门店经理作为门店的灵魂人物&#xff0c;肩负着提升门店业绩、维护品牌形象、带领团队成长等重要职责。本文将为您解析如何成为一位卓越的门店经理&#xff0c;助力您的职业生涯迈向新高峰…

5个程序员可以接私活的平台和一些建议

22年之前我从没有接触过程序员外包接单&#xff0c;也没有任何的私活接单经验&#xff0c;就纯纯看自己瞎摸索&#xff0c;通过Google搜索&#xff0c;在各类程序员私活接单平台上摸爬滚打&#xff0c;硬是杀出一条血路&#xff0c;从一开始的年入3k到现在每月稳定收入1w&#…

【排序算法】C语言实现归并排序,包括递归和迭代两个版本

文章目录 &#x1f680;前言&#x1f680;归并排序介绍及其思想&#x1f680;递归实现&#x1f680;迭代实现 &#x1f680;前言 大家好啊&#xff01;阿辉接着更新排序算法&#xff0c;今天要讲的是归并排序&#xff0c;这里阿辉将讲到归并排序的递归实现和迭代实现&#xff…

AI服务器行业分析:预计2023年全球市场规模将达211亿美元

AI服务器需求暴增&#xff0c;机构指出&#xff0c;AI时代浪潮汹涌&#xff0c;海量数据催生庞大的算力需求&#xff0c;带动AI服务器需求量与日俱增&#xff0c;用于服务器内、外部数据传输等接口芯片也随之攀升。 ChatGPT大火后&#xff0c;各大科技企业纷纷发力AI大模型&…

Vue的生命周期方法

beforeCreate 在实例初始化之后&#xff0c;数据观测&#xff08;data observe&#xff09;和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问。 created 实例已经创建完成之后被调用。在这一步&#xff0c;实…

坚持刷题 |对称二叉树

文章目录 题目考察点代码实现实现总结扩展用迭代的方式判断是否为对称二叉树递归和迭代的对比可能的扩展提问 坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天真的好累&#xff0c;就不难为自己了&#xff0c;刷个简单级别的吧&#xff1a;对称二叉树 题目 101.对称二叉…

大数据开发之SparkSQL

第 1 章&#xff1a;spark sql概述 1.1 什么是spark sql 1、spark sql是spark用于结构化数据处理的spark模块 1&#xff09;半结构化数据&#xff08;日志数据&#xff09; 2&#xff09;结构化数据&#xff08;数据库数据&#xff09; 1.2 为什么要有sparksql hive on s…

如何开发一款独立游戏?

如何开发一款独立游戏&#xff1f; 2023年&#xff0c;Steam平台共发行了14533款游戏&#xff0c;我们可以清晰地看到独立游戏市场的蓬勃发展和不断增长的活力。我们从SteamDB数据统计网站获悉&#xff0c;2023年Steam平台的游戏发行数量比2022年的12562款增加了1971款&#xf…

理想汽车大模型算法工程师面试,被问的瑟瑟发抖。。。。

最近我们技术群的一位小伙伴&#xff0c;分享了他面试理想汽车大模型算法工程师的经历与经验。 今天整理后分享给大家&#xff0c;如果你对这块感兴趣&#xff0c;可以文末加入我们的技术&面试讨论群 一面&#xff08;1.5h&#xff0c;感觉有点难&#xff09; 自我介绍&…

推荐收藏!48道数据分析师高频面试题汇总!

大家好&#xff0c;最近很多小伙伴私信我&#xff0c;讲一下数据分析的面试题&#xff0c;今天给大家整理了48道数据分析师面试时被频繁问到的题目&#xff0c;找数据分析岗位的同学一定要码住认真看。 想了解最新的面试动态、最新高频考点、技术交流的同学&#xff0c;可以文…

Windows和Linux访问不了GitHub的解决方法

一、Windows访问不了GitHub 问题描述 使用Windows访问GitHub时&#xff0c;出现如下情况&#xff0c;显示无法访问。 解决方案&#xff1a; 打开域名查询网站&#xff1a;https://tool.chinaz.com/dns 输入GitHub的域名&#xff0c;点击立即检测。 出现如下页面&#xff0c…

RK3399平台开发系列讲解(USB篇)BusHound 工具使用介绍

🚀返回专栏总目录 文章目录 一、BusHound简介二、BusHound的下载三、BusHound设备窗口四、BUSHound发送命令窗口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线数据包监视和控制的开发工具软件,其名…

2024年学鸿蒙开发有前途吗?

随着科技的不断发展和智能设备的普及&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;正逐渐受到市场的关注。2024年&#xff0c;学鸿蒙开发是否有前途&#xff0c;成为了很多开发者和学生关心的问题。本文将从多个角度分析鸿蒙系统的发展前景&#xff0c;以及学习…

JavaScript入门分享

文章目录 一、JavaScript简介二、第一个JavaScript案例三、在浏览器中执行JavaScript代码四、JavaScript的输出方法五、JavaScript的语法六、JavaScript的数据类型七、JavaScript的定义变量/函数八、热门文章 一、JavaScript简介 JavaScript是一种高级编程语言&#xff0c;用于…

esxi配置NTP自动对时与手动对时

目录 背景解法配置NTP服务器立即与NTP服务器同步时间 附&#xff1a;几个常用的NTP服务器列表 背景 VMware ESXi 6.7运行了一段时间后偶然发现系统时间与标准时间有5分钟左右的差异&#xff0c;于是研究了下如何自动对时以及用命令行立即对时。 解法 配置NTP服务器 首先在管…

手把手教你使用MDK仿真调试

当今的嵌入式系统开发领域中&#xff0c;高效的调试工具对于工程师来说至关重要。它们能够极大地减少开发周期中的错误追踪时间&#xff0c;并加速产品的上市时间。MDK作为业界领先的嵌入式开发工具之一&#xff0c;其内置的调试功能被广大开发者所赞誉。这些功能不仅提供了对代…

PostgreSQL 是不是大小写敏感

如果你踩过 MySQL 的大坑的话就知道&#xff1a;MySQL 在 Windows 下不区分大小写&#xff0c;但在 Linux 下默认是区分大小写。 如果你稍加不注意就会出现在本机开发的程序运行一切正常&#xff0c;发布到服务器行就出现表名找不到的问题。 这是我们前一个项目遇到的巨大问题…