Redis系列

作者Mr.Chen,转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

Redis集群存储

先看下架构图,下面说明其存储原理:首先redis每个节点上的数据都是不一样的,只有主从节点的数据是一样,这分别体现出其分布式及高可用性。每个主节点负责的是不同范围的槽(slot),根据指定算法来确定值所对应的槽进而进行存取操作。

注意点:

  • redis最低要求3个或以上的主节点(Master Node)
  • 一个主节点可对应多个从节点(Slave Node),主节点挂掉后,自有的投票机制会选出其中一个从节点晋升为主节点
  • 任何一个主节点挂掉都会使整个redis服务器宕机
  • 槽(slot)直接对应的是主节点

Redis集群搭建

redis集群搭建有几种方法,我使用的是官方推荐的redis-cluster

第一步:安装ruby

其实整个流程用到的是一个叫redis-trib.rb工具,因其由ruby语言编写所以需要相应环境的支持。

下载安装:

因为yum库上的版本过低,所以我是直接从官网上下载tar包解压安装的,如果原来有安装旧版本的,建议先卸载干净旧版本再进行新版本的安装,不然会有不少麻烦的错误~

我这里使用的是2.4.3稳定版

wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz

make && make install

ruby –v

gem –v

gem install redis

ps:gem是ruby的一个包管理器,类似yum,gem install redis安装的是集群所需的组件

第二步:节点配置

节点配置主要有以下几步:

  • 在多个节点上安装redis
  • 节点配置文件redis.conf中打开集群属性,cluster-enable yes
  • 修改端口号,port NodePort
  • 修改集群的节点配置文件,cluster-config-file nodes_port.conf
  • 若是不同的主机需要修改绑定的主机地址,bind host
  • 可以使用 include 来共享相同的配置,include same.conf

第三步:启动各节点redis服务器

第四步:创建集群

现在使用redis-trib.rb工具对redis的节点进行集群管理,创建集群3主3从,这里示例是单机多节点:

./redis-trib.rb create --replicas  127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1:

参数replicas 表示每个主节点下有多少个从节点,至于哪个节点是主哪个节点是从就由redis来进行分配。

ps:有时宕机后需要重新创建或新增节点时会出现这样的错误:

[ERR] Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

提示中说明了两个原因,一个是节点的配置信息已过期(指的是redis.conf中的cluster-config-file,一般位于主节点根目录下),另一个原因是本地数据库存在一些值造成了影响,那么解决办法就有以下两种了:

  • 删除nodes-port.conf
  • 删除aof、rdb文件

需要注意的是在进行以上操作前要先把redis的进程关闭,处理完之后再重新启动

最后一步:测试

//在节点7000设置值

./redis-cli -c -p 

127.0.0.1:> set name cjh

-> Redirected to slot [] located at 127.0.0.1:

OK

//在节点7001获取值

./redis-cli -c -p 

127.0.0.1:> get name

"cjh"

//查看集群节点的信息

127.0.0.1:> cluster nodes 

测试通过~

Redis集群分布的更多相关文章

  1. Redis集群分布(Windows版)

    Redis系列 作者Mr.Chen,转载请注明博客出处:http://www.cnblogs.com/cjh-notes/ 第一步:下载安装redis windows版的下载地址:https://gi ...

  2. redis集群(多机)分布

    一.实现原理 一致性哈希算法(Consistent Hashing): http://www.zsythink.net/archives/1182 二.配置两个redis服务,端口号要不一致 三.代码 ...

  3. Redis集群最佳实践

    今天我们来聊一聊Redis集群.先看看集群的特点,我对它的理解是要需要同时满足高可用性以及可扩展性,即任何时候对外的接口都要是基本可用的并具备一定的灾备能力,同时节点的数量能够根据业务量级的大小动态的 ...

  4. Redis 集群的合纵与连横

    之前一篇写了关于 Redis 的性能,这篇就写写我认为比性能更重要的扩展性方面的主题. 如果再给我一次回到好几年前的机会,对于使用 Redis 我一开始就要好好考虑将来的扩展问题.就像我们做数据库分库 ...

  5. 搭建高可用的redis集群,避免standalone模式带给你的苦难

    现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境 曾今也遭遇到这种情况,导致redis内存不够挂掉的情况 ...

  6. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  7. redis集群讨论

    一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...

  8. 高性能网站架构设计之缓存篇(5)- Redis 集群(上)

    集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器节 ...

  9. 基于Twemproxy的Redis集群方案

    概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...

随机推荐

  1. 解决spring定时任务执行2次和tomcat部署缓慢的问题

    spring定时任务执行2次 问题重现和解析 最近使用quartz定时任务框架,结果发现开发环境执行无任何问题,部署到服务器上后,发现同一时间任务执行了多次.经过搜索发现是服务器上tomcat的配置文 ...

  2. zoom:1是什么意思

    当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的增加而增加,所以造成内容元素的显示超出了容器. overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6,也可以用heig ...

  3. 本地访问服务器上的wamp

    一,httpd-vhosts.conf文件           # Virtual Hosts #     ServerName localhost     DocumentRoot D:/wamp/ ...

  4. 更改dede网站地图模板样式

    dedecms后台可以生成2个地图,一个是网站地图,html格式的,一个是rss地图,同样默认这2个地图生成之后也会有底部的dedecms版权声明,这个时候我们需要分别更改这2个模板才可以去掉底部的版 ...

  5. WinSCP怎么导入filezilla中的站点?

    WinSCP是一款优秀的图形界面,远程文件管理工具,其出色的图形化界面与windows完美集成,是运用在windows上与远程服务器安全传输文件的软件之一 工具/原料 winscp 方法/步骤 下载. ...

  6. (Release Candidate)Candidate

    RC:(Release Candidate)Candidate是候选人的意思,用在软件或者操作系统上就是候选版本

  7. xmind2013激活

    参考链接:http://blog.163.com/m15999573195_1/blog/static/248705063201542622112823/

  8. [JS]Math.random()

    参考网址:http://www.soulteary.com/2014/07/05/js-math-random-trick.html [JS]Math.random()的二三事 看到题目,如果大家平时 ...

  9. CCF系列之相反数(201403-1)

    试题名称: 相反数 试题编号: 201403-1时间限制: 1.0s 内存限制: 256.0MB 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对 ...

  10. [转]sysctl -P 报错解决办法

    问题症状 修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl  -P 报错 error: "net.bridge.bridge-nf-call-ip6ta ...