zoukankan      html  css  js  c++  java
  • Redis主从服务部署

    Redis__WindowsServer主从服务部署及调用实例

     
     
     
    一、先谈谈单个Redis服务的安装
            使用的redis是2.8.17版本,从官网下载解压缩后文件内容为:
             
                安装并启动一个redis服务很简单,步骤如下:
                1、配置日志文件目录:只用修改logfile定位到Log文件夹下
                     
                2、命令行定位到解压文件的目录
                      cd /d D:MasterRedis-2.8.17     (windows 7)
                      cd /d D:SlaveRedis-2.8.17       (windows server)
                3、安装Redis:redis-server --service-install redis.windows.conf --loglevel verbose
                4、启动Redis:redis-server --service-start
                5、停止Redis:redis-server --service-stop
                6、卸载Redis:redis-server --service-uninstall 
     
     
    二、再谈谈结论
            经过半天的折腾,结论就是:Success!过程我下面再谈,结论就是在单台windows servers机器上部署主从服务,第二个redis示例始终启动不了(写这篇文章的时候解决了),在两个不同的服务器上部署也可以成功

     
    三、谈谈过程
          1、本来想安装部署单个Redis的方式连续操作两遍,才发现第一次操作时已经启动了名称为Redis的服务,第二次操作时服务根本就安装不上去,解决的方法就是给Redis服务命名,命令如下:
           redis-server --service-install redis6379.windows.conf --loglevel verbose  --service-name Redis6379
           --service-name是服务名称,坑爹的是我在网上拷贝的命令只有一个横杠(-),半天得不到想要的结果(一个横岗也会创建名称为redis的服务)
           2、安装服务的时候加上了servicename,在服务启动、停止、卸载的时候也需要加上servicename参数
                 1、服务启动:redis-server --service-start --service-name Redis6379 redis6379.windows.conf
                 2、服务停止:redis-server --service-stop --service-name Redis6379 redis6379.windows.conf
                 3、服务卸载:redis-server --service-uninstall --service-name Redis6379 redis6379.windows.conf
           3、最后在谈谈之前为什么主从服务都可以安装成功,但是启动一个服务后第二个服务始终无法启动的坑 
        事件查看器的消息如下:(不知所云啊!)
         
       
                 坑就在安装服务的命令:
        redis-server --service-install --service-name Redis6379 redis6379.windows.conf --loglevel verbose (不OK)    
        redis-server --service-install redis6379.windows.conf --loglevel verbose  --service-name Redis6379 (OK) 
        看清楚了,就在于service-name参数的位置,在配置文件前不行,必须放在最后
     
    五、谈谈配置文件的修改(redis.windows.conf)
           1、主Redis服务配置文件不用做修改
                   可能这个地方需要修改,我没有做测试
           2、从Redis服务配置文件修改如下:
                 1、 端口修改
                 2、  目前来看这里不用做修改,注释即可
                 3、 日志文件
                  4、  指定主Redis服务的IP和端口
     
    五、截个图说明结论(用的工具是RedisDesktopManager)
          1、RedisRemoteMaster为远程主机的主Redis

       2、RedisRemoteSlaver为远程主机的从Redis (可以看到开始主redis未设置abc时,返回的是null,设置后,返回了新值)
     
      
             3、RedisLocal为主机的从Redis(同2)
     
     
    五、调用Redis代码
        1、配置主从服务器
              
     <appSettings>
        <!--Redis写入服务器地址,可以添加多个服务器通过,分隔-->
        <add key="ReadWriteHosts" value="192.168.1.100:6379" />
        <!--Redis读服务器地址,可以添加多个服务器通过,分隔-->
        <add key="ReadOnlyHosts" value="192.168.1.100:6380,127.0.0.1:6379" />
      </appSettings>
         2、Redis初始化(RedisConfig.cs
    复制代码
     class RedisConfig
        {
            public static RedisClient Redis
            {
                get
                {
                    return (RedisClient)reidsPools.GetClient();
                }
            }
    
            private static string[] hosts;
            private static PooledRedisClientManager reidsPools;
            static RedisConfig()
            {
                var readWriteHosts = ConfigurationManager.AppSettings["ReadWriteHosts"].Split(',');
                var readOnlyHosts = ConfigurationManager.AppSettings["ReadOnlyHosts"].Split(',');
    
                reidsPools = new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
                {
                    MaxWritePoolSize = 100,//“写”链接池链接数
                    MaxReadPoolSize = 200,//“读”链接池链接数
                    AutoStart = true,
                    DefaultDb = 0
                });
            }
        }
    复制代码
         3、Redis操作工具类(RedisHelper.cs)
    复制代码
       public class RedisHelper
        {
            /// <summary>
            /// 获取值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <returns></returns>
            public T Get<T>(string key)
            {
                using (var redis = RedisConfig.Redis)
                {
                    return redis.Get<T>(key);
                }
            }
    
            /// <summary>
            /// 设置值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <returns></returns>
            public bool Set<T>(string key, T value)
            {
                using (var redis = RedisConfig.Redis)
                {
                    return redis.Set<T>(key, value);
                }
            }
    
            /// <summary>
            /// 设置值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <returns></returns>
            public bool Set<T>(string key, T value, DateTime dt)
            {
                using (var redis = RedisConfig.Redis)
                {
                    return redis.Set<T>(key, value, dt);
                }
            }
    
        }
    复制代码
         4、调用代码
     
    复制代码
      class Program
        {
            static void Main(string[] args)
            {
                var redis = new RedisHelper();
    
                redis.Set<string>("aa", DateTime.Now.ToString());
    
                var d = redis.Get<string>("aa");
            }
        }
    复制代码
     
  • 相关阅读:
    笔记-归并排序
    Repeated Substring Pattern
    Assign Cookies
    Number of Boomerangs
    Paint Fence
    Path Sum III
    Valid Word Square
    Sum of Two Integers
    Find All Numbers Disappeared in an Array
    First Unique Character in a String
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4899843.html
Copyright © 2011-2022 走看看