redis两种集群的简单搭建

redis主从复制集群

实现方式:选择一台redis服务器作为master节点(负责写操作),另外一台或多台服务器作为slave节点(负责读操作),slave节点上的数据完全由master节点同步过来。

作用:降低单节点redis服务器的读写负载,将读写分离到不同的服务器
提供数据的可用性

这里写图片描述

配置方式:
Master节点不用作任何变动
Slave节点上的配置文件redis.conf需要修改如下配置

#slaveof <masterip> <masterport>
改为
salveof 127.0.0.1 6379
最好让服务器配成只读属性
salve-read-only yes

要想实现高可用即故障转移: 需要使用 keepalive

redis数据分片(Sharding)集群

实现方式:由若干台互不相干的redis服务器组成一个集群,互相独立,由集群的前置节点或者客户端实现将数据分散插入到集群中的各服务器上

作用:扩大数据存储的容量,降低单台服务器负载

这里写图片描述

步骤

首先准备两个服务器
这里写图片描述
其中两个服务器的服务名称和端口号要不相同,两个生产的dump.rdb文件要在不同的路径下面,而且第二个服务器不能打开主从服务器的配置,配置如下,要注释掉该配置

这里写图片描述

开启两个服务器,在后台运行

后台运行可以修改如下配置,将daemonize改为yes即可

这里写图片描述

这里写图片描述

开启两个客户端
这里写图片描述

这里写图片描述

然后编写分片集群的代码 

  public static void main(String[] args) {

        //poolConfig是连接池的配置参数
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        //shards是分片集群中所有分片服务器信息列表,JedisShardInfo是分片服务器信息
        ArrayList<JedisShardInfo> shards = new ArrayList<>();

        //将集群中的两台shard服务器信息封装到两个JedisShardInfo对象中
        JedisShardInfo shard1 = new JedisShardInfo("192.168.90.131",6379);
        JedisShardInfo shard2 = new JedisShardInfo("192.168.90.131",6380);

        //将分片服务器信息对象添加到分片服务器信息列表shards中
        shards.add(shard1);
        shards.add(shard2);

        //创建一个带数据分片功能的jedis连接池
        ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards);

        //从连接池中获取一个带数据分片功能的jedis连接
        ShardedJedis jedis = shardedJedisPool.getResource();

        for (int i=0;i<1000;i++){
            jedis.set("string-key-"+i,"1000"+i);
        }

        jedis.close();

        shardedJedisPool.close();

    }

进行运行,查看结果
这里写图片描述

这里写图片描述

可以进行检测,6379端口的客户端是否存在6380端口的key

这里写图片描述
从图中可以看出,返回0,说明不存在

这里就看出分片集群的搭建成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值