您当前的位置:首页 > 电脑百科 > 数据库 > Redis

redis集群搭建

时间:2020-08-11 10:57:49  来源:  作者:

./redis-trib.rb create --replicas 1 172.20.10.8:7001 172.20.10.8:7002 172.20.10.8:7003 172.20.10.8:7004 172.20.10.8:7005 172.20.10.8:7006

1.安装ruby环境

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:

安装ruby

yum install ruby

gem install redis

2.创建集群

这里在同一台服务器用不同的端口表示不同的redis服务器,如下:

主节点:172.20.10.8:7001 172.20.10.8:7002 172.20.10.8:7003

从节点:172.20.10.8:7004 172.20.10.8:7005 172.20.10.8:7006

在/下创建redis-cluster目录,其下创建7001、7002...7006目录,如下:

创建文件夹命令

mkdir -p /redis-cluster/700{1..6}/{logs,data} && cd /redis-cluster

生成配置文件命令(一起复制,不要单行复制)

 

IP=`ip a|grep 'inet' |grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|awk -F'/' '{print $1}'`

for i in {1..6}

do

cat > 700${i}/redis.conf <<EOF

daemonize yes

port 700${i}

cluster-enabled yes

cluster-config-file cluster-nodes-700${i}.conf

cluster-node-timeout 15000

Appendonly yes

bind ${IP}

protected-mode no

dbfilename dump-700${i}.rdb

logfile /redis-cluster/700${i}/logs/redis.log

pidfile /redis-cluster/700${i}/data/redis.pid

dir /redis-cluster/700${i}/data

appendfilename "appendonly-700${i}.aof"

EOF

done

3./redis-cluster文件夹下编写cluster.sh脚本

#脚本内容如下:

# 参数

IP=`ip a|grep 'inet' |grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|awk -F'/' '{print $1}'`

port=$2

if [ ! $# -eq 2 ];then

echo "Warning! 请输入两个参数!"

exit 1

fi

if [ -z ${port} ];then

echo "Warning! 请输入端口号"

exit 1

fi

# start函数

start(){

IS_PORT_EXISTS=$( ps -ef | grep redis| grep ${port} | grep -v grep | wc -l )

if [ $IS_PORT_EXISTS -ge 1 ];then

echo "Warning! 端口号已存在!"

exit 1

else

/redis-cluster/redis-server /redis-cluster/${port}/redis.conf

fi

}

# stop函数

stop(){

IS_PORT_EXISTS=$(ps -ef |grep redis |grep ${port} |grep -v grep |wc -l)

if [ $IS_PORT_EXISTS -lt 1 ];then

echo "Warning! 端口不存在!"

exit 1

else

/redis-cluster/redis-cli -h ${IP} -p ${port} shutdown

fi

}

# status函数

status(){

/redis-cluster/redis-trib.rb check ${IP}:${port}

}

case $1 in

start)

start

;;

stop)

stop

;;

status)

status

;;

?|help)

echo $"Usage: 'redis' {start|status|stop|help|?}"

;;

*)

echo $"Usage: 'redis' {start|status|stop|help|?}"

esac

4.启动所有节点redis

复制redis的src目录下的客户端,服务端和集群脚本至/redis-cluster文件夹

cp /usr/local /redis-4.0.14/src/redis-cli /redis-cluster/redis-cli

cp /usr/local/redis-4.0.14/src/redis-server /redis-cluster/redis-server

cp /usr/local/redis-4.0.14/src/redis-trib.rb /redis-cluster/redis-trib.rb

至此/redis-cluster文件夹下的目录结构如图:

 

为cluster.sh脚本赋值

chmod 777 cluster.sh

运行脚本启动6个redis进程

./cluster.sh start 7001

查看启动的redis进程: ps -ef | grep redis

4.客户端集群方式访问redis

./redis-cli -c -h 172.20.10.8 -p 7001 ,其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号

cluster nodes 查询集群结点信息

cluster info 查询集群状态信息

5. jedis 连接redis集群

// 连接redis集群

@Test

publicvoid testJedisCluster() {

JedisPoolConfig config = new JedisPoolConfig();

// 最大连接数

config.setMaxTotal(30);

// 最大连接空闲数

config.setMaxIdle(2);

//集群结点

Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7001));

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7002));

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7003));

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7004));

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7005));

jedisClusterNode.add(new HostAndPort("172.20.0.8", 7006));

JedisCluster jc = new JedisCluster(jedisClusterNode, config);

 

JedisCluster jcd = new JedisCluster(jedisClusterNode);

jcd.set("test", "111");

String value = jcd.get("test");

System.out.println(value);

}



Tags:redis集群   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。一、常见使用方式Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis...【详细内容】
2021-03-19  Tags: redis集群  点击:(202)  评论:(0)  加入收藏
Redis集群详解Redis有三种集群模式,分别是:* 主从模式 * Sentinel模式 * Cluster模式三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)&mdash;&mdash;RedisRedis官网:ht...【详细内容】
2020-10-17  Tags: redis集群  点击:(126)  评论:(0)  加入收藏
./redis-trib.rb create --replicas 1 172.20.10.8:7001 172.20.10.8:7002 172.20.10.8:7003 172.20.10.8:7004 172.20.10.8:7005 172.20.10.8:70061.安装ruby环境redis集群...【详细内容】
2020-08-11  Tags: redis集群  点击:(75)  评论:(0)  加入收藏
这里的Redis集群指的是Redis Cluster,它是Redis在3.0版本正式推出的专用集群方案,有效地解决了Redis分布式方面的需求。当单机内存、并发、流量等遇到瓶颈的时候,可以采用这种...【详细内容】
2020-07-16  Tags: redis集群  点击:(62)  评论:(0)  加入收藏
【51CTO.com原创稿件】 上一篇我们讲解了 Redis 哨兵的工作原理,哨兵主要针对单节点故障无法自动恢复的解决方案,集群主要针对单节点容量、并发问题、线性可扩展性的解决方案...【详细内容】
2020-06-17  Tags: redis集群  点击:(55)  评论:(0)  加入收藏
redis集群简述哨兵模式中如果主从中 master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的。而且哨兵模式中只有一个主节点对外提供...【详细内容】
2020-03-18  Tags: redis集群  点击:(67)  评论:(0)  加入收藏
参考 《Redis并发与运维》串行命令由于n个key是比较均匀的分布在Redis Cluster的各个节点上,因此无法使用mget命令一次性获取,所以通常来讲要获取n个key的值,最简单的方法就是...【详细内容】
2020-01-13  Tags: redis集群  点击:(265)  评论:(0)  加入收藏
前面我们介绍了国人自己开发的Redis集群方案&mdash;&mdash;Codis,Codis友好的管理界面以及强大的自动平衡槽位的功能深受广大开发者的喜爱。今天我们一起来聊一聊Redis作者自...【详细内容】
2019-09-23  Tags: redis集群  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
来源: my.oschina.net/xiaomu0082/blog/2990388首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应...【详细内容】
2021-12-08  Java识堂    Tags:Redis   点击:(16)  评论:(0)  加入收藏
我不知道为什么你会选择对特定数量的“错误”(或警告)如此具体。听起来您正在寻找将要发布到 Yahoo! 的某些文章的内容。 Insider (N Foos to Blah for the BlahBlah)。那说:...【详细内容】
2021-12-07  富集云科技有限公司    Tags:Redis   点击:(14)  评论:(0)  加入收藏
目录 一、背景 二、步骤 0.理论支持 1、获取数据 2、结果 3、分析数据并评估大小 三、关于repl-backlog-size 一、背景 repl-backlog-size控制这个环形缓冲区. ​ 主从断...【详细内容】
2021-11-05  弈秋的美好生活    Tags:redis   点击:(41)  评论:(0)  加入收藏
Redis 性能测试是通过同时执行多个命令实现的。1,Redis-benchmarkRedis性能命令:redis性能命令格式: redis-benchmark [option] [option value] redis 性能测试工具可选参数如...【详细内容】
2021-11-02  川石信息    Tags:Redis   点击:(41)  评论:(0)  加入收藏
1 概述数据结构和内部编码 无传统关系型数据库的 Table 模型schema 所对应的db仅以编号区分。同一 db 内,key 作为顶层模型,它的值是扁平化的。即 db 就是key的命名空间。 key...【详细内容】
2021-11-01  JavaEdge    Tags:Redis   点击:(28)  评论:(0)  加入收藏
普通java中使用引用Java redis 驱动,即可连接:import redis.clients.jedis.Jedis; public class RedisTestJava { public static void main(String[] args) { //连...【详细内容】
2021-10-13  faesuite    Tags:Redis   点击:(34)  评论:(0)  加入收藏
Redis常用的数据结构有 string list set zset hashstringstring 是 Redis 的基本的数据类型,一个 key 对应一个 value。string 类型是二进制安全的,Redis的string可以包含任...【详细内容】
2021-10-12  语霖    Tags:Redis   点击:(36)  评论:(0)  加入收藏
列表类型可以存储一组按插入顺序排序的字符串,它非常灵活,支持在两端插入、弹出数据,可以充当栈和队列的角色。> LPUSH fruit apple(integer) 1> RPUSH fruit banana(integer)...【详细内容】
2021-09-17  深夜敲代码    Tags:Redis   点击:(54)  评论:(0)  加入收藏
Redis持久化意义 是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你的redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用 大量的请...【详细内容】
2021-08-12  小李说IT    Tags:Redis   点击:(77)  评论:(0)  加入收藏
当查询Redis中没有的数据时,该查询会下沉到数据库层,同时数据库层也没有该数据,当这种情况大量出现或被恶意攻击时,接口的访问全部透过Redis访问数据库,而数据库中也没有这些数据...【详细内容】
2021-07-30  随便t    Tags:缓存穿透   点击:(90)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条