今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建)。

环境:CentOS 7.1,redis-5.0.7

一、单机安装

1、将Redis安装包放置服务器并解压

2、进入redis安装目录(笔者的是/usr/soft/redis-5.0.7)执行make && make install命令,安装完成后出现下图的场景,则说明安装成功

3、在redis安装目录创建两个文件夹etc(用于存放redis.conf),bin(存放相应的命令脚本)

将redis.conf移到etc目录中,将src下的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server移到bin目录中

mv redis.conf etc/
#进入src目录下
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server ../bin/

3、配置redis.conf(常用配置项)

#注释掉这一行,否则其它机器不可以访问当前redis,也可以改成其他ip
#bind 127.0.0.1
#将protected-mode后面的yes改成no,也是为了让其他ip访问当前redis
protected-mode no
#将daemonize后面的no改成yes,这个是为了让redis后台运行。
daemonize yes
#日志文件所在目录
logfile /usr/soft/redis-5.0./logs/redis.log
#可配置密码,也可不配,例如123456是我设置的密码
#如果配置了密码,在用redis-cli连接的时候需要用【auth ‘密码’】命令才用使用
requirepass

4、将redis安装目录加入环境变量

vim ~/.bashrc(也可以是/etc/profile)

保存之后执行source ~/.bashrc(如果是/etc/profile文件,则是source /etc/profile)

5、启动redis

#/usr/soft/redis-5.0./etc/redis.conf是配置文件
redis-server /usr/soft/redis-5.0./etc/redis.conf

6、客户端连接

用redis-cli创建一个key、value键值对

(推荐一个可视化连接工具RedisDesktopManager)

7、关闭redis

#也可以直接通过kill -9杀掉进程
redis-cli shutdown

二、集群安装

Redis集群是去中心化的,并没有主从节点之分。集群中要求节点数量必须是奇数,所以至少要有三个节点,并且每个节点至少有一备份节点,所以至少需要6个redis服务实例。

我这边有三个服务器,每个服务器上启两个redis,一个active节点,一个standby节点

#三台服务器,每台服务器redis端口号为7001,
192.169.197.100
192.169.197.110
192.169.197.120

1、在redis目录下创建redis_cluster目录,在redis_cluster目录下创建7001,7002两个节点目录,将redis.conf(基于单机安装,配置项跟之前的一样)复制到7001,7002两个目录中。

2、分别修改7001,7002目录下的redis.conf配置文件

#7001目录下的redis.conf
port #端口
pidfile /var/run/redis_7001.pid #进程文件
cluster-enabled yes #开启集群功能
cluster-config-file nodes-.conf #集群配置文件,集群启动后生成
appendonly yes #开启日志 #7002目录下的redis.conf
port #端口
pidfile /var/run/redis_7002.pid #进程文件
cluster-enabled yes #开启集群功能
cluster-config-file nodes-.conf #集群配置文件,集群启动后生成
appendonly yes #开启日志

3、将redis_cluster用scp命令分发到另外两台服务器

4、依次启动6个redis实例,(下面以脚本统一启动)

#!/bin/bash
echo '开始启动redis-cluster' redisnodes=('cnode-1' 'cnode-2' 'cnode-3')
ports=('' '') for ip in ${redisnodes[@]};
do
for port in ${ports[@]};
do
echo "start redis $ip:$port"
ssh $ip redis-server /usr/soft/redis-5.0./redis_cluster/$port/redis.conf
done
done echo '启动redis-cluster结束'

脚本执行结果:

5、创建集群命令,一共六个节点

#如果没设置密码,需要把【-a 】去掉
redis-cli -a --cluster create 192.168.197.100: 192.168.197.110: 192.168.197.120: 192.168.197.100: 192.168.197.110: 192.168.197.120: --cluster-replicas

执行之后会发现slots的分布

6、验证集群

#[-c]参数是为了启动集群模式,缺少此参数会在设值的时候直接报错
redis-cli -c -h 192.168.197.100 -p -a

7、关闭集群

可以一个一个关闭,但这边使用脚本统一关闭

#!/bin/bash
#所有服务器节点的hostname
allnodes=('cnode-1' 'cnode-2' 'cnode-3')
#端口号开始
PORT=
#结束端口号
ENDPORT=
#密码,如果redis没配置密码可省略
PASSWROD=
while [ $((PORT < ENDPORT)) != "" ]; do
for ip in ${allnodes[@]};
do
#判断某个端口是否已被占用,如果是,则执行关闭命令
count=`ssh $ip lsof -i:$PORT | wc -l`
if [ $count -gt ];
then
echo "Stopping Redis $ip:$PORT"
ssh $ip redis-cli -p $PORT -a $PASSWROD shutdown >/dev/null
else
echo "no redis $ip:$PORT"
fi
done
PORT=$((PORT+))
done
exit

脚本执行结果:

上述就是Redis单机版安装和集群部署的全部步骤。

=======================================================

我是Liusy,一个喜欢健身的程序员。

欢迎关注公众号【Liusy01】,一起交流Java技术及健身,获取更多干货。

 

Redis单机安装以及集群搭建的更多相关文章

  1. linux下redis的安装和集群搭建

    一.redis概述 1.1.目前redis支持的cluster特性: 1):节点自动发现. 2):slave->master 选举,集群容错. 3):Hot resharding:在线分片. 4 ...

  2. Elasticsearch单机安装_集群搭建_索引基本操作_Head插件安装与基本操作_ik分词器配置_logstash实现数据同步_教程

    一.Elasticsearch单机安装 1.将es安装包传到服务器上 这是安装包 这里我是用的是WinSCP上传工具,上传到/home/plugins文件下. 进入Xshell,验证一下是否上传成功. ...

  3. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  4. 转:Redis 3.2.1集群搭建

    Redis 3.2.1集群搭建   一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...

  5. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  6. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  7. RabbitMQ安装、集群搭建、概念解析

    RabbitMQ安装.集群搭建.概念解析 基本概念 为什么会产生MQ 1.解耦:采用异步方式实现业务需求达到解耦的目的. 2.缓冲流量,削峰填谷: 问:为什么会有流量冲击? 答:采用"直接调 ...

  8. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

随机推荐

  1. 【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3

    @ 目录 前言 安装pyttsx3 实现TTS接口 后言 前言 本次的实现需求有点困难,所以也就记录下来,别到时候都忘了. 首先先不说正题,有兴趣的可以看一看: 1.目标是实现一个可以传一个文本就返回 ...

  2. 【译】New experimental Razor editor for Visual Studio

    随着 Visual Studio 2019 16.7 Preview 4 的发布,现在可以尝试我们新的实验性 Razor 编辑器,用于本地开发,包括 MVC.Razor Page 和 Blazor.我 ...

  3. 秒杀 2Sum 3Sum 4Sum 算法题

    2 Sum 这题是 Leetcode 的第一题,相信大部分小伙伴都听过的吧. 作为一道标着 Easy 难度的题,它真的这么简单吗? 我在之前的刷题视频里说过,大家刷题一定要吃透一类题,为什么有的人题目 ...

  4. 远程控制(远控Bin)

    一.概念 控制端:运行在攻击者的电脑中,负责控制其他肉鸡: 被控制端:需要去生成,运行在肉鸡上,木马病毒 二.使用远控Bin工具实现内网远程控制 Step1:打开Kill.exe,点击系统设置,修改监 ...

  5. Java进阶专题(十一) 探究JMM

    前言 ​ JMM即java内存模型,JMM研究的就是多线程下Java代码的执行顺序,共享变量的读写.它定义了Java虚拟机在计算机内存中的工作方式.从抽象角度看,JMM定义了线程和主存之间的抽象关系: ...

  6. Java多线程_Master-Worker设计模式

    Master-Worker模式是常用的并行模式之一,它的核心思想是:系统由Master进程和Worker进程两类进程协同工作,Master负责接收和分配任务,Wroker负责处理子任务.当各个Work ...

  7. vs使用fscanf和fprintf错误警告处理

    严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen('fscanf'.strcmp):This function or variable may be unsafe. 最全解决办法(转 ...

  8. ABP开发框架的技术点分析(1)

    ABP是ASP.NET Boilerplate的简称,ABP是一个开源且文档友好的应用程序框架.ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型.ABP框架可以 ...

  9. Unity碰撞消息(OnCollisionXXXX)和触发消息(OnTriggerXXXX)的调用情境

    MonoBehaviour中的消息非常多,一共有62个! 除了必须关注的脚本生命周期的一系列函数外,还有其他两组比较常混淆的消息:碰撞和触发. 按3D和2D物体区分,又分为碰撞:Collision.C ...

  10. directives 自定义指令

    钩子函数 一个指令定义对象可以提供如下几个钩子函数 (均为可选): bind:只调用一次,指令第一次绑定到元素时调用.在这里可以进行一次性的初始化设置.基本数据类型如果发生改变,不会触发,但是引用数据 ...