• Redis的分布式配置


     

             Redis存在三种级别的分布式部署:主从复制、主从切换、集群配置,推荐使用主从切换模式。

    主从复制

    1. 启动主服务:端口6379
    2. 启动从服务:端口6380, 配置文件中加上 slaveof 127.0.0.1 6379,启动后服务会成为6379的从服务,自动同步6379的操作
    3. 代码中的配置

       

      readWriteHosts:配置为主服务的地址 localhost:6379

      readOnlyHosts:配置为从服务的地址 localhost:6380

      4. 该模式可以实现读写分离,提高系统的整体性能;可以在主服务上禁止保存到磁盘,在从服务器上开启保存到磁盘,提高主服务的性能。

    主从切换

    当主服务出错时,主从复制不会自动恢复,会处于只读状态。Redis提供了哨兵节点可以实现主从切换。

      1. 启动哨兵节点:redis-server.exe ..sentinel_26378.conf  --sentinel

    port 26378

    sentinel monitor mymaster 127.0.0.1 6380 1

      哨兵节点的主要配置是端口号(26378)和监视的服务配置(sentinel monitor <master-name> <ip> <redis-port> <quorum>),quorum是为了实现主从切换最少需要的投票节点,一定要小于启动的哨兵节点数,否则无法实现主从切换。

      2. 在代码中的使用

    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位于redissrc下面。

        --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:9008、redis-trib.rb del-node 127.0.0.1:9001 6fd2df0fa12e0ce5ea150f03bdb6a969a189d885 --该ID为9004节点ID

      8. 问题:对于集群,c#的驱动库Service.Stack.Redis、StackExchange.Redis都没有处理集群连接的情况,但网上有改造Service.Stack.Redis支持集群的方案

  • 相关阅读:
    WPF数据绑定机制是如何实现
    C#自定义特性的使用
    MVVMLight学习笔记(一)---MVVMLight概述
    C# Autofac学习笔记
    EFCodeFirst快速搭建入门
    SQL having与where用法区别
    EventWaitHandle 类
    C# EF 使用 (CodeFirst模式)
    wmi 远程启动程序
    Centos 7 的一些 基础知识
  • 原文地址:https://www.cnblogs.com/lglblogadd/p/7216163.html
Copyright © 2020-2023  润新知