为了账号安全,请及时绑定邮箱和手机立即绑定

Redis Cluster集群快速搭建

标签:
Java

想在3分钟以内搭建一个Redis Cluster集群吗?说3分钟可能有点久,实际上好像不到一分钟就完成了Redis Cluster集群的搭建。

介绍

redis cluster是官方提供的一种集群方案,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

结构特点:

  1. 所有节点彼此互联,redis服务器启动两个端口,一个为服务客户端的端口,另外一个为内部通讯端口,内部通讯端口比服务端口大10000. 比如:6379与16379
  2. 超过半数及以上的节点时,节点才会失效
  3. 客户端与redis服务器直连,无代理服务器,只需连接到集群中的任何一个节点即可
  4. Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

快速搭建

今天看官方文档的时候发现redis源码包中还存在一个redis-cluster的shell脚本,可以快速创建集群。

image.png

创建

cd utils/create-cluster
gem install redis
./create-cluster start
./create-cluster create

image.png

是不是很快就创建了redis集群

内部实现

create-cluster利用的是使用redis-server命令行指定配置参数让redis-server启动在不同的端口。
要想搭建redis-cluster集群,我们需要的最少配置文件为

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

create-cluster启动实例的shell脚本。

PORT=30000
TIMEOUT=2000
NODES=6
REPLICAS=1
ENDPORT=$((PORT+NODES))

if [ "$1" == "start" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        echo "Starting $PORT"
        ../../src/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes
    done
    exit 0
fi

if [ "$1" == "create" ]
then
    HOSTS=""
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        HOSTS="$HOSTS 127.0.0.1:$PORT"
    done
    ../../src/redis-trib.rb create --replicas $REPLICAS $HOSTS
    exit 0
fi

可以看出来创建集群的脚本本质上也是命令行指定配置参数,创建脚本则是利用redis-trib.rb

最后

这里简单的演示下redis集群的快速搭建,先明白集群搭建,后面详细说明其实现原理,Redis集群的搭建非常简单,深入比较难。

参考

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.1万
获赞与收藏
1544

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消