1. 程式人生 > >redis兩種叢集的簡單搭建

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,說明不存在

這裡就看出分片叢集的搭建成功了。