一、先谈谈单个Redis服务的安装



        使用的redis是2.8.17版本,从官网下载解压缩后文件内容为:



         

redis如何配合sql server redis和sqlserver结合_redis


            安装并启动一个redis服务很简单,步骤如下:


            1、配置日志文件目录:只用修改logfile定位到Log文件夹下


                 

redis如何配合sql server redis和sqlserver结合_redis如何配合sql server_02


            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示例始终启动不了(写这篇文章的时候解决了),在两个不同的服务器上部署也可以成功


redis如何配合sql server redis和sqlserver结合_Redis_03


 


三、谈谈过程


      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如何配合sql server redis和sqlserver结合_redis_04


   


             坑就在安装服务的命令:


    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服务配置文件不用做修改


              

redis如何配合sql server redis和sqlserver结合_数据库_05

 可能这个地方需要修改,我没有做测试

       2、从Redis服务配置文件修改如下:


             1、

redis如何配合sql server redis和sqlserver结合_redis_06

 端口修改

             2、

redis如何配合sql server redis和sqlserver结合_操作系统_07

  目前来看这里不用做修改,注释即可

             3、

redis如何配合sql server redis和sqlserver结合_redis_08

 日志文件

              4、 

redis如何配合sql server redis和sqlserver结合_redis如何配合sql server_09

 指定主Redis服务的IP和端口

 


五、截个图说明结论(用的工具是RedisDesktopManager)


      1、RedisRemoteMaster为远程主机的主Redis


redis如何配合sql server redis和sqlserver结合_Redis_10


   2、RedisRemoteSlaver为远程主机的从Redis (可以看到开始主redis未设置abc时,返回的是null,设置后,返回了新值)


 


redis如何配合sql server redis和sqlserver结合_操作系统_11

  

         3、RedisLocal为主机的从Redis(同2)


redis如何配合sql server redis和sqlserver结合_操作系统_12


 


 


五、调用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


redis如何配合sql server redis和sqlserver结合_redis_13


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如何配合sql server redis和sqlserver结合_redis_13


 


     3、Redis操作工具类(RedisHelper.cs)


redis如何配合sql server redis和sqlserver结合_redis_13


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

    }


redis如何配合sql server redis和sqlserver结合_redis_13


 


     4、调用代码


redis如何配合sql server redis和sqlserver结合_redis_13

class Program    {        static void Main(string[] args)        {            var redis = new RedisHelper();            redis.Set<string>("aa", DateTime.Now.ToString());            var d = redis.Get<string>("aa");        }    }


redis如何配合sql server redis和sqlserver结合_redis_13