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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM