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

本文转自:http://www.cnblogs.com/gossip/p/4898653.htmlhtml

 

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

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

   二、RedisRemoteSlaver为远程主机的从Redis (能够看到开始主redis未设置abc时,返回的是null,设置后,返回了新值)
 
  
         三、RedisLocal为主机的从Redis(同2)
 
 
5、调用Redis代码
    一、配置主从服务器
          
 <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>
     二、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
            });
        }
    }
复制代码

 

     三、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);
            }
        }

    }
复制代码

 

     四、调用代码
 
复制代码
  class Program
    {
        static void Main(string[] args)
        {
            var redis = new RedisHelper();

            redis.Set<string>("aa", DateTime.Now.ToString());

            var d = redis.Get<string>("aa");
        }
    }
复制代码
相关文章
相关标签/搜索