Redis 集群介绍:

(1) 为什么要使用集群:如果数据量很大,单台机器会存在存储空间不够用 、查询速度慢 、负载高等问题,部署集群就是为了解决这些问题
(2) Redis 集群架构如下,采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接,我们可以在线增加/删除节点
(3) 所有的节点彼此互联,内部使用二进制协议优化传输速度和带宽,客户端连接集群中任何一个可用节点即可
(4) 为了增加冗余性,所有节点(一台机器被称为一个节点)都可以部署一主一从,也可以是多个从,从库不提供服务,只作为备用

集群环境:

A机器(192.168.216.135)上开三个 Redis 服务,端口分别为 7000,7002,7004
B机器(192.168.216.136)上开三个 Redis 服务,端口分别为 7001,7003,7005
当我们创建集群的时候,会自动选择其中三个 Redis 服务作为主库,其他三个作为从库
注意:这里我们实验的时候在一台机器上模拟三个节点,在实际中应该一台机器一个节点

前提准备:

① 两台机器都关闭防火墙和SELinux,方便实验
② 需要在集群中的一台机器上安装 Ruby 2.2 版本及以上,Redis 集群需 Ruby 支持

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce
yum -y groupinstall "Development Tools"
yum -y install gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-deve
cd /root/
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES
wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS
rpmbuild -bb rpmbuild/SPECS/ruby22x.spec
yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.-.el7.centos.x86_64.rpm
gem install redis
cp /usr/local/src/redis-4.0.1/src/redis-trib.rb  /usr/bin/

A机器(192.168.216.135)配置:

[root@localhost ~]# cat /etc/redis_7000.conf
port
bind 192.168.216.135 <--- 这里设置为本机IP地址
daemonize yes
pidfile /var/run/redis_7000.pid
dir /data/redis_data/
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout
appendonly yes
[root@localhost ~]# cp /etc/redis_7000.conf /etc/redis_7002.conf && sed -i 's/7000/7002/g' /etc/redis_7002.conf
[root@localhost ~]# cp /etc/redis_7000.conf /etc/redis_7004.conf && sed -i 's/7000/7004/g' /etc/redis_7004.conf
[root@localhost ~]# mkdir -p /data/redis_data/{,,} //创建数据存放目录
[root@localhost ~]# redis-server /etc/redis_7000.conf    //启动三个Redis服务
[root@localhost ~]# redis-server /etc/redis_7002.conf
[root@localhost ~]# redis-server /etc/redis_7004.conf

B机器(192.168.216.136)配置:

[root@localhost ~]# cat /etc/redis_7001.conf
port
bind 192.168.216.136 <--- 这里设置为本机IP地址
daemonize yes
pidfile /var/run/redis_7001.pid
dir /data/redis_data/
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout
appendonly yes
[root@localhost ~]# cp /etc/redis_7001.conf /etc/redis_7003.conf && sed -i 's/7001/7003/g' /etc/redis_7003.conf
[root@localhost ~]# cp /etc/redis_7001.conf /etc/redis_7005.conf && sed -i 's/7001/7005/g' /etc/redis_7005.conf
[root@localhost ~]# mkdir -p /data/redis_data/{,,} //创建数据存放目录
[root@localhost ~]# redis-server /etc/redis_7001.conf    //启动三个Redis服务
[root@localhost ~]# redis-server /etc/redis_7003.conf
[root@localhost ~]# redis-server /etc/redis_7005.conf

创建集群:

[root@localhost ~]# redis-trib.rb create --replicas  192.168.216.135: 192.168.216.135: 192.168.216.135: \
192.168.216.136: 192.168.216.136: 192.168.216.136:7005 //需要在安装 Ruby 的那台机器上操作,会自动选择其中三个为主库
[root@localhost ~]# redis-trib.rb check 192.168.216.135: //查看集群状态,可以查看到哪些节点是主库,哪些节点是从库,以及集群是否运行正常

操作集群:

[root@localhost ~]# redis-cli -c -h 192.168.216.135 -p     //登录任意一台集群节点,需要使用 -c 参数,指定使用集群的方式登录
192.168.216.135:> set name "Tom"
-> Redirected to slot [] located at 192.168.216.136: //添加一条数据,可以看到被存储到集群的 192.168.216.136:7001 节点上
OK
192.168.216.136:> set name2 "John"
-> Redirected to slot [] located at 192.168.216.135: //添加一条数据,可以看到被存储到集群的 192.168.216.135:7000 节点上
OK
192.168.216.135:> set name3 "Jeny" //添加一条数据,如果没有集群输出,则表明被存储到本机的集群节点上
OK
192.168.216.135:> cluster nodes //查看集群的所有节点
192.168.216.135:> cluster info //查看集群的状态信息
192.168.216.135:> cluster meet <ip> <port> //添加集群节点,需要先提前配置好Redis服务,添加的节点都会被设置为主库
192.168.216.135:> cluster replicate <node_id> //将当前节点设置为指定节点的从库
192.168.216.135:> cluster forget <node_id> //移除某个集群节点

Redis 集群配置的更多相关文章

  1. java操作redis集群配置[可配置密码]和工具类(比较好用)

    转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>red ...

  2. Redis集群配置(linux)

     *弄了一天,有问题直接问我.qq:137416943   1.redis集群的配置和简单使用   Redis集群配置 0.首先要配置环境: 0.1 安装c++ yum install gcc-c++ ...

  3. java操作redis集群配置[可配置密码]和工具类

    java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>redis.clients</groupId>   & ...

  4. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  5. centos6.5下redis集群配置(多机多节点)

    可参考官网文档:redis集群配置 需要注意的是,集群中的每个节点都会涉及到两个端口,一个是用于处理客户端操作的(如下介绍到的6379/6380),另一个是10000+{监听端口},用于集群各个节点间 ...

  6. redis简介以及redis集群配置

    简介: redis 是一个高性能的key-value数据库..它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序 ...

  7. redis 集群配置实战

    文章转载自:http://hot66hot.iteye.com/blog/2050676 最近研究Redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 rele ...

  8. spring 使用redis集群配置

    上面两篇介绍了redis集群的配置合一些基本的概念,所以接下来当然是要在项目中使用咯,redis的java支持已经做的非常好了,所以我们来试着使用这些api来进行redis的操作,首先我们需要操作re ...

  9. redis集群配置

    客户端分片 程序端实现 代理proxy,访问proxy,proxy指定redis保存位置. Twemproxy Redis cluster ,会造成一部分数据丢失,无中心化1.将数据自动切分(spli ...

  10. redis集群配置,spring整合jedis,缓存同步

    前台的商品数据(图片等加载缓慢)查询,先从redis缓存查询数据. redis是一个nosql数据库,内存版数据库,读取速度11w/s.本身具有内存淘汰机制,是单线程服务器(分时操作系统),线程安全. ...

随机推荐

  1. vi 命令集

    一:跳到文件第一行 1. 输入:0或:1,然后回车: 2. 在键盘按下小写gg:   二:跳到文件最后一行 1. 输入:$,然后回车: 2. 在键盘按下大写G : 3. 在键盘按Shift + g: ...

  2. [转]Android进程间通信

    Android进程间通信 一.Linux系统进程间通信有哪些方式? 1.socket: 2.name pipe命名管道: 3.message queue消息队列: 4.singal信号量: 5.sha ...

  3. Linux CPU Load Average

    理解Linux系统负荷 LINUX下CPU Load Average的一点研究 Linux load average负载量分析与解决思路 Understanding Linux CPU Load - ...

  4. Java并发笔记-未完待续待详解

    为什么需要并行? – 业务要求 – 性能 并行计算还出于业务模型的需要 – 并不是为了提高系统性能,而是确实在业务上需要多个执行单元. – 比如HTTP服务器,为每一个Socket连接新建一个处理线程 ...

  5. Ubuntu 12.04安装Java开发环境(jdk1.7 + Eclipse)

    首先,去官网下载linux版本的jdk和eclipse tar包,并将其解压出来.我将jdk包发在了/usr/java/目录下,eclipse放在了/opt/目录下. 然后,配置java开发环境,即安 ...

  6. discuz密码找回:[1]忘记UCENTER创始人密码

    人们都是健忘的,何况每天的事情很多,有些站长更是兼职做,赚点外快而已,而ucenter更是不常用,所以忘记密码是在正常不过的事情,如果密码忘记怎么找回呢?方法有很多种,例如用comsenz tools ...

  7. ORACLE 几个我忍了他很多年的问题

    ① DataGuard环境,主库创建的临时文件,不在备库上创建 ② 创建11G R2 Rac环境时,在RHEL 6.0及以后版本上,最后执行root.sh命令时,以及重新启动OS后启动ohasd,都需 ...

  8. 了解ASP.NET Core 依赖注入,看这篇就够了 于2017年11月6日由jesseliu发布

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  9. matlab中 %d,%f,%c,%s代表什么意思

    1.%d就是输出整型:%3d就是说按照长度为3的整型输出,比如10,输出就是“_10”,“_”代表空格. 2.%f就是输出小数:%6.2f就是小数点后保留2位,输出总长度为6,比如3.14159,输出 ...

  10. c++ A类包含B类指针,B类包含A类指针的情况

    #include<stdio.h> class Bclass; class Aclass { public: friend Bclass; void func() { pB->fun ...