Redis的分佈式配置

         Redis存在三種級別的分佈式部署:主從複製、主從切換、集羣配置,推薦使用主從切換模式。html

主從複製

  1. 啓動主服務:端口6379
  2. 啓動從服務:端口6380, 配置文件中加上 slaveof 127.0.0.1 6379,啓動後服務會成爲6379的從服務,自動同步6379的操做
  3. 代碼中的配置

   

 

  readWriteHosts:配置爲主服務的地址 localhost:6379node

  readOnlyHosts:配置爲從服務的地址 localhost:6380redis

  4. 該模式能夠實現讀寫分離,提升系統的總體性能;能夠在主服務上禁止保存到磁盤,在從服務器上開啓保存到磁盤,提升主服務的性能。c#

主從切換

當主服務出錯時,主從複製不會自動恢復,會處於只讀狀態。Redis提供了哨兵節點能夠實現主從切換。ruby

  1. 啓動哨兵節點:redis-server.exe ..\sentinel_26378.conf  --sentinel服務器

 

port 26378分佈式

 

sentinel monitor mymaster 127.0.0.1 6380 1ide

  哨兵節點的主要配置是端口號(26378)和監視的服務配置(sentinel monitor <master-name> <ip> <redis-port> <quorum>),quorum是爲了實現主從切換最少須要的投票節點,必定要小於啓動的哨兵節點數,不然沒法實現主從切換。性能

  2. 在代碼中的使用spa

var sentinelHosts = new[] { "127.0.0.1:26378" };

var sentinel = new RedisSentinel(sentinelHosts, masterName: "mymaster");

var redisClientManager = sentinel.Start();

 

using (IRedisClient redis = redisClientManager.GetClient())

{

   redis.Set("dateTimeNow", DateTime.Now.ToString());

}

using(IRedisClient redis = redisClientManager.GetReadOnlyClient())

{

    string dateTimeNow = redis.Get<string>("dateTimeNow");

     }

  3. 在實際中能夠配置多臺哨兵,提升總體的穩定性。哨兵節點的花銷比較小,能夠與主、從服務在一臺主機上。

 

集羣配置

參考 http://www.cnblogs.com/xling/p/5253063.html

  1. 下載 RubyInstaller

http://rubyinstaller.org/downloads/

  2. 安裝 GEM,Redis 的 ruby 支持環境

    gem install redis

  3. 新建6個子文件夾:7000,7001,7002,7003,7004,7005,修改對應的redis.config

port 7000

cluster-enabled yes

cluster-config-file nodes-7000.conf

    cluster-enabled是開啓集羣模式

  4. 爲方便啓動這些 Redis 實例,新建以下 bat 文件:

@echo off
cd c:\Redis
start Redis-Server ./7000/redis.conf
start Redis-Server ./7001/redis.conf
start Redis-Server ./7002/redis.conf
start Redis-Server ./7003/redis.conf
start Redis-Server ./7004/redis.conf
start Redis-Server ./7005/redis.conf

 

  5. 建立羣集 :redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

    redis-trib.rb位於redis\src下面。

    --replicas1即自動分配一個Slave,若是想手動指定Slave ,將該值變爲0便可。上面的命令會建立3個主服務、3個從服務。操做成功會返回以下頁面。

 

 

  6. 自此,集羣就建立好了。能夠在redis-cli.exe 中輸入cluster info查看

  7. 添加、刪除節點redis-trib.rb add-node 127.0.0.1:9007 127.0.0.1:900八、redis-trib.rb del-node 127.0.0.1:9001 6fd2df0fa12e0ce5ea150f03bdb6a969a189d885 --該ID爲9004節點ID

  8. 問題:對於集羣,c#的驅動庫Service.Stack.Redis、StackExchange.Redis都沒有處理集羣鏈接的狀況,但網上有改造Service.Stack.Redis支持集羣的方案

相關文章
相關標籤/搜索