Redis集群 - cluster集群、数据分片
2017-04-25 15:40
603 查看
在前面配置了一个简单的redis主从架构:
我们现在进入真正的集群配置:
如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。
在mysql里,多个主从的架构下,我们借助了中间价
redis其实在集群里面也能做到这一点,我们配置好集群之后,比如
其实在我们实战当中,很多时候一台服务器不可能承担所有数据,我们做分布式开发,数据也要分布式存储。
2、另外还需要停止哨兵(sentinel)。
3、你的redis版本必须是3.x以上。配置集群需要至少3个主节点(每个主节点对应一个从节点,这样一共6个节点)
https://redis.io/topics/cluster-tutorial
创建6个节点,端口分别是6379、6380、6381、6479、6480、6481。
配置文件中:
port必须不一样;pidfile必须不一样
dbfilename前面加#注释掉
cluster-enabled yes 表示打开集群
cluster-config-file nodes_6379.conf 集群模式下,每个redis节点生产一个配置文件,由redis自己维护,文件名区分即可。
appendonly yes 开启AOF存储模式
appendfilename 也要区分文件名
cluster-node-timeout 10000
6379.conf:
其他几个配置文件也要分别做修改(注意区分不一样的地方)
其他修改配置文件也要分别做修改。
安装好后,在我们redis目录
为了简化,我们可以把这些写入一个shell脚本,比如
启动之后,我们查看进程:
数据存放在我们配置的路径
这个目录下可能有
我们现在把这些文件都删掉(因为我们是学习演示,所以直接删除更方便)
https://redis.io/topics/cluster-tutorial
执行上面命令之后可以看到:
可以看出有3个master和3个slave。
然后我们输入:
ok,我们集群最简单的配置已经成功啦(注意这个工具紧紧是帮我们把各个节点配置成集群)。
可能出现的错误:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次运行出错,则必须去datadir对应的目录手工删除 自动生产的cluster配置文件
查看集群信息:
我们来新增数据,发现是存入到6380那个节点的:
我们链接上6381这个节点
这就是集群的基本功能。
我们现在进入真正的集群配置:
如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。
在mysql里,多个主从的架构下,我们借助了中间价
mycat。比如,我们插入一条新闻数据,这个中间价
mycat就是通过一定算法来决定这条新闻是插入哪一个服务器中。
redis其实在集群里面也能做到这一点,我们配置好集群之后,比如
set name jack,可以通过某种算法来决定这个数据是进入我们哪一个redis服务器的主节点。这就是我们所谓的redis集群里的一个功能——数据分片。
其实在我们实战当中,很多时候一台服务器不可能承担所有数据,我们做分布式开发,数据也要分布式存储。
去掉主从配置
1、我们让各个redis实例独立运行#注释掉配置文件中的 slaveof xxxxx
2、另外还需要停止哨兵(sentinel)。
3、你的redis版本必须是3.x以上。配置集群需要至少3个主节点(每个主节点对应一个从节点,这样一共6个节点)
集群的关键配置
官方教程:https://redis.io/topics/cluster-tutorial
创建6个节点,端口分别是6379、6380、6381、6479、6480、6481。
配置文件中:
port必须不一样;pidfile必须不一样
dbfilename前面加#注释掉
cluster-enabled yes 表示打开集群
cluster-config-file nodes_6379.conf 集群模式下,每个redis节点生产一个配置文件,由redis自己维护,文件名区分即可。
appendonly yes 开启AOF存储模式
appendfilename 也要区分文件名
cluster-node-timeout 10000
6379.conf:
port 6379 pidfile "/usr/local/redis/redis_6379.pid" #dbfilename "dump6379.rdb" appendonly yes appendfilename "appendonly6379.aof" cluster-enabled yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000
其他几个配置文件也要分别做修改(注意区分不一样的地方)
关闭rdb存储
save "" #save 900 1 #save 300 10 #save 60 10000
其他修改配置文件也要分别做修改。
管理集群
需要安装ruby工具包#切换到root用户 su - root
yum -y install ruby ruby-devel rubygems rpm-build
#安装管理redis的工具 gem install redis
安装好后,在我们redis目录
/usr/local/redis/bin/下多了一个文件:
redis-trib.rb
启动这6个实例
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/6381.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/6479.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/6480.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/6481.conf
为了简化,我们可以把这些写入一个shell脚本,比如
start,然后执行这个文件
./start就启动6个节点了。
启动之后,我们查看进程:
cluster代表各个节点已经做好准备进入集群。如果没有这个可能前面的配置是有错误的。
清空所有节点的redis数据
(在前面学习的时候增加过数据。)数据存放在我们配置的路径
/usr/local/redis/datadir/。
这个目录下可能有
.rdb文件,因为在我们前面学习中是用rdb模式保存数据的。
我们现在把这些文件都删掉(因为我们是学习演示,所以直接删除更方便)
启动集群
看文档:https://redis.io/topics/cluster-tutorial
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6479 127.0.0.1:6480 127.0.0.1:6481
执行上面命令之后可以看到:
可以看出有3个master和3个slave。
然后我们输入:
yes
ok,我们集群最简单的配置已经成功啦(注意这个工具紧紧是帮我们把各个节点配置成集群)。
可能出现的错误:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次运行出错,则必须去datadir对应的目录手工删除 自动生产的cluster配置文件
测试集群
链接集群的方式,需要多加一个参数./redis-cli -h 127.0.0.1 -c -p 6379 #-c代表链接到集群
查看集群信息:
我们来新增数据,发现是存入到6380那个节点的:
我们链接上6381这个节点
get一下刚才存入的数据:
这就是集群的基本功能。
相关文章推荐
- redis-cluster集群扩容以及扩容client读写数据影响的探究
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
- mongodb sharding cluster(分片集群)
- redis 3.0 cluster 集群 学习之路篇 [2]
- Redis-3.2.0集群配置(redis cluster)
- Redis集群搭建之Redis Cluster实践
- Redis 集群的分库和分片
- mongodb sharding cluster(分片集群)
- redis-集群(cluster)创建并使用redis集群(二)
- redis 3.0 cluster 集群 学习之路篇(资料汇总)
- Redis-cluster集群【第四篇】:redis-cluster集群配置
- Redis3.0.7 cluster/集群 安装配置教程
- redis 3.0 cluster 集群 学习之路篇 [3]
- Redis3.0集群crc16算法php实现方法(php取得redis3.0集群中redis数据所在的redis分区插槽,并根据分区插槽取得分区所在redis服务器地址)
- Redis集群 redis cluster in 3.0
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- redis 3.0 cluster 集群 学习之路篇 [1]
- redis 3.0 cluster 集群 学习之路篇(资料汇总)
- redis集群报错:clusterdown the cluster is down
- redis(9)、redis集群之redis Cluster使用