一、先談談單個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"); } }