一、Redis的下载、安装、启动(单实例)

我们统一将Redis安装在/opt目录下,执行命令如下:

$ cd /opt
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar zxvf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ make

安装完成,下面我们启动Redis服务:

$ cd /opt/redis-4.0.9
$ ./src/redis-server

Redis启动成功,将采用Redis的默认配置。也可修改Redis根目录下的redis.conf文件,并在Redis启动时,指定配置文件,如下:

$ ./src/redis-server redis.conf

注意,由于Redis的保护模式,只绑定了本机的127.0.0.1,从其他机器是不能访问的。所以我们需要添加本机的ip 192.168.xxx.xxx。

二、Redis Cluster(集群)的搭建

由于我们的机器有限,我们将采用一台机器多个端口的方式搭建我们的Redis集群。

首先我们创建Redis的配置文件目录,如下:

$ cd /opt
$ mkdir redis-cluster

并在redis-cluster目录下创建6个节点的配置文件。分别为:

  • redis-7000.conf
  • redis-7001.conf
  • redis-7002.conf
  • redis-7003.conf
  • redis-7004.conf
  • redis-7005.conf

后面的7000,7001等是redis启动的端口号。接下来编辑文件的内容:

#该集群阶段的端口
port 7000
#为每一个集群节点指定一个pid_file
pidfile /var/run/redis_7000.pid
#在bind指令后添加本机的ip
bind 127.0.0.1 149.28.37.147
#找到Cluster配置的代码段,使得Redis支持集群
cluster-enabled yes
#每一个集群节点都有一个配置文件,这个文件是不能手动编辑的。确保每一个集群节点的配置文件不通
cluster-config-file nodes-7000.conf
#集群节点的超时时间,单位:ms,超时后集群会认为该节点失败
cluster-node-timeout 5000
#最后将appendonly改成yes
appendonly yes

这样一个节点的配置就完成,其他的5个节点也做同样的配置。并将6个节点的Redis实例启动:

$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7000.conf &
$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7001.conf &
$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7002.conf &
$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7003.conf &
$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7004.conf &
$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7005.conf &

使用这6个节点创建集群:

$ /opt/redis-4.0.9/src/redis-trib.rb create --replicas 1 149.28.37.147:7000 149.28.37.147:7001 149.28.37.147:7002 149.28.37.147:7003 149.28.37.147:7004 149.28.37.147:7005

–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。

执行命令后会显示:

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
149.28.37.147:7000
149.28.37.147:7001
149.28.37.147:7002
Adding replica 149.28.37.147:7004 to 149.28.37.147:7000
Adding replica 149.28.37.147:7005 to 149.28.37.147:7001
Adding replica 149.28.37.147:7003 to 149.28.37.147:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 65625091304b0fa2dd75a00f62b6aceac1701094 149.28.37.147:7000
slots:0-5460 (5461 slots) master
M: 4da569bf8402e4f75ab6e0fe7076919c22e3f900 149.28.37.147:7001
slots:5461-10922 (5462 slots) master
M: b977680e24f23f8fec96876d9014803ca752e2e2 149.28.37.147:7002
slots:10923-16383 (5461 slots) master
S: 7183e47a64bca23157140229352455d1a1407dc2 149.28.37.147:7003
replicates b977680e24f23f8fec96876d9014803ca752e2e2
S: b2f916a643fefef1d43dbd1ef5d22f72c0ee43d6 149.28.37.147:7004
replicates 65625091304b0fa2dd75a00f62b6aceac1701094
S: e362d9aae5fe3e9c343d266a5ab952272e0e37b0 149.28.37.147:7005
replicates 4da569bf8402e4f75ab6e0fe7076919c22e3f900
Can I set the above configuration? (type 'yes' to accept):

我们输入yes,回车:

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 149.28.37.147:7000)
M: 65625091304b0fa2dd75a00f62b6aceac1701094 149.28.37.147:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: b977680e24f23f8fec96876d9014803ca752e2e2 149.28.37.147:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: e362d9aae5fe3e9c343d266a5ab952272e0e37b0 149.28.37.147:7005
slots: (0 slots) slave
replicates 4da569bf8402e4f75ab6e0fe7076919c22e3f900
S: b2f916a643fefef1d43dbd1ef5d22f72c0ee43d6 149.28.37.147:7004
slots: (0 slots) slave
replicates 65625091304b0fa2dd75a00f62b6aceac1701094
M: 4da569bf8402e4f75ab6e0fe7076919c22e3f900 149.28.37.147:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 7183e47a64bca23157140229352455d1a1407dc2 149.28.37.147:7003
slots: (0 slots) slave
replicates b977680e24f23f8fec96876d9014803ca752e2e2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

集群搭建完毕。我们可以使用Spring-Boot非常方便的去访问Redis集群了。

三、Ruby版本过低问题

在使用redis-trib.rb时,需要先安装ruby:

$ yum -y install ruby ruby-devel rubygems rpm-build
$ gem install redis

这是出现redis requires Ruby version >= 2.2.2的报错,我们先安装rvm:

$ curl -L get.rvm.io | bash -s stable
$ source /usr/local/rvm/scripts/rvm

查看版本

rvm list known

安装2.4.1版本

rvm install 2.4.1

使用2.4.1版本

rvm use 2.4.1

移除2.0.0版本

rvm remove 2.0.0

查看当前ruby版本

ruby --version

再安装redis,就可以了

gem install redis

  

Redis Cluster(集群)的搭建的更多相关文章

  1. redis集群与分片(2)-Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  2. Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  3. Redis Cluster集群的搭建

    redis集群搭建原理: redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了.   官方的一个简单测试: 测试完成了50个并发执行100000个请求. 设置和获取 ...

  4. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  5. Redis Cluster 集群使用(3)

    简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...

  6. docker下创建redis cluster集群

    概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...

  7. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  8. 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!

    转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208  版权声明:本文为博主 ...

  9. Redis cluster集群:原理及搭建

    Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...

  10. Redis Cluster集群搭建<原>

    一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标     Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...

随机推荐

  1. spring根据name或者id获取实例

    @Resource(name="beanname") private ClassType scheduler; 其中ClassType需要跟实例的类型对应上.

  2. 接口测试工具-Jmeter使用笔记(二:GET/POST请求参数填写)

    举例来说 我的被测系统API的http请求涉及到GET/POST/PUT/DELETE四种.请求传参可分为两种: GET请求 http://请求路径/Ecs-duHc0U4E #该请求参数“Ecs-d ...

  3. Windows server 2016 支持容器 ,安装docker 搭建Ubuntu+hadoop (docker为服务器)

    一.Windows server 2016 是肯定要安装的, 关于如何启动容器功能那就是控制面板中增加与删除里面的启用了,很多地方可以百度到 二. 安装Ubuntu hadoop 等  待续 注意: ...

  4. SQL SERVER 2016研究二

    2.动态数据屏蔽 创建数据表: 创建账号并授予获取屏蔽后数据的权限 此函数:partial(0,"XXX-XXXX-",4) 表示从左边0位开始依次替换到倒数4位. 注意:屏蔽只作 ...

  5. winform里直接使用WCF,不需要单独的WCF项目

    https://www.cnblogs.com/fengwenit/p/4249446.html 依照此法建立即可, 但是vs生成的配置有误,正确配置如下 <?xml version=" ...

  6. Redis入门到高可用(九)——无序set

    一.结构 特点:无序,无重复,支持集合间操作 二.主要API smembers : 无序:(会阻塞)小心使用,可用sscan代替 spop: 从集合中弹出元素,每次只能弹出一个: 三.实战 抽奖系统 ...

  7. Spark代码中设置appName在client模式和cluster模式中不一样问题

    问题 Spark应用名在使用yarn-cluster模式提交时不生效,在使用yarn-client模式提交时生效,如图1所示,第一个应用是使用yarn-client模式提交的,正确显示我们代码里设置的 ...

  8. [django]drf知识点梳理-权限

    用户 - 权限 - 资源 (拥有) (绑定) django权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活:用好权限机制,能让系统更加强大和健壮 django权限控制 Djan ...

  9. 一、程序设计与C语言

    @程序:用特殊的编程语言编写的代码,用于表达如何解决问题. @编程语言的作用:编程语言不是用来和计算机交谈的,而是用它来描述要求计算机如何解决问的过程或方法.计算机只能执行(懂得)机器语言. @辗转相 ...

  10. vi相关

    vi有三种模式: 命令模式:键盘的任意输入都当成“编辑命令”: 输入模式:键盘的任意输入都当成文本内容: 末行模式:键盘的任意输入都当成“文本管理命令” 命令模式(刚打开)==>(i,a,o)输 ...