一、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. DBCHART

    dbchart1.Series[0].DataSource := adoquery1; dbchart1.Series[0].XLabelsSource := 'aaaa'; dbchart1.Ser ...

  2. SecureCRT使用总结

    设置背景和编码

  3. InnoDB log file 设置多大合适?

    简介: 数据库的东西,往往一个参数就牵涉N多知识点.所以简单的说一下.大家都知道innodb是支持事务的存储引擎.事务的四个特性ACID即原子性(atomicity),一致性(consistency) ...

  4. SQL Server2008及以上 表分区操作详解

    SQL Server 表分区之水平表分区  转自:https://www.cnblogs.com/Brambling/p/6766482.html 什么是表分区? 表分区分为水平表分区和垂直表分区,水 ...

  5. 如何将wordpress所有文章批量改为已发布状态

    用wordpress建站的一个好处就是bd站长工具平台上有数据结构插件,可以认为bd默认支持wp发展,另外一种建站程序是discuz.我们在用wordpress发布文章时,特别是那种多用户投稿的文章一 ...

  6. 20180820 SQL 提示Error: String or binary data would be truncated

    Error: String or binary data would be truncated,错误,是因为栏位给出的长度不够,增加初始化长度就可以了. 除了创建表的增加长度情况,还有一种是,SELE ...

  7. MySQL group replication介绍

    “MySQL group replication” group replication是MySQL官方开发的一个开源插件,是实现MySQL高可用集群的一个工具.第一个GA版本正式发布于MySQL5.7 ...

  8. pt-table-checksum 使用实践

    在另外部署的机器上执行:      pt-table-checksum h='192.168.122.47',u='root',p='cc.123',P=3306 -d cat --nocheck-r ...

  9. Python3学习之路~6.5 私有属性和私有方法

    属性分为静态属性和动态属性,静态属性就是变量,动态属性就是方法.但是一般我们说的属性就是变量,方法就是方法.私有属性/方法就是外面访问不了,只有自己能够访问的属性/方法.如何将属性和方法分别变成私有属 ...

  10. Python3学习之路~6.2 实例演示面向对象编程的好处

    首先建一个dog类,实例化为3个dog对象,并让它们都叫. class Dog: def bulk(self): print("xiaohuang:wang wang wang !" ...