第一步:在Redis下載,因爲redis(官網 https://redis.io/)是在linux上開發出來的,官網上沒有下載windows版本的地址,不過github上有,請按照如圖所示進行下載。node
登陸redis官網https://redis.io/導航到download頁面,並找到下面這段話:linux
The Redis project does not officially support Windows. However, the Microsoft Open Tech group develops and maintains this Windows port targeting Win64. Learn moregit
大概意思就是redis項目官方並沒支持windows的版本,不過「微軟開源技術團隊」有維護windows版本,而且只支持64位。點擊上方地址進入windows版本的開源。(官方只支持64位版本,若是要32需本身下載源碼編譯)。github
releases 地址: https://github.com/MSOpenTech/redis/releases redis
我下的是壓縮文件,解壓後文件以下:json
此時能夠進行單機測試,打開redis-server.exe(默認端口爲6379),而後打開redis-cli.exe(客戶端),此時在能夠客戶端上進行get,set操做:c#
第二步,redis Cluster集羣環境安裝(本文的集羣方案採用redis3.0官方自帶的cluster方式部署,3.0以前官方不支持集羣):windows
一、先在上述下載的redis程序集根目錄下建立6個文件夾:7000 7001 7002 7003 7004 7005ruby
二、修改redis.conf文件,分別放到上述文件夾中,且每一個conf的端口號要記的修改(7000~7005),conf內容:服務器
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
三、啓動上述動6個服務端,爲方便啓動這些 Redis 實例,新建以下 bat 文件:
@echo off
cd c:\Redis
start Redis-Server ./7000/redis.conf
start Redis-Server ./7001/redis.conf
start Redis-Server ./7002/redis.conf
start Redis-Server ./7003/redis.conf
start Redis-Server ./7004/redis.conf
start Redis-Server ./7005/redis.conf
4,下載 RubyInstaller
http://rubyinstaller.org/downloads/
安裝時,勾選
Install Td/Tk Support
Add Ruby executables to your PATH
Associate .rb and .rbw files with this Ruby installation
5,下載 redis-trib.rb , 放到 c:\redis 目錄下備用
https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
6,安裝 GEM,Redis 的 ruby 支持環境
打開 cmd , 執行如下命令:
cd c:\redis (第一步中下載的redis目錄)
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
--replicas 1 即自動分配 Slave , 若是想手動指定 Slave , 將該值變爲 0 便可, 地址列表中,只須要 3個實例便可。
因爲使用的是 6個實例,自動分配 Slave ,因此前3個爲 master , 後3 個爲 slave, 並肯定3個主節點的 slots 範圍。
若是確認沒有問題, 輸入 yes
若是羣集建立成功, 會輸出 OK XXXXX
若是出現:
err slot xxx is already busy, 請刪除 appendonly.aof 及 nodes-xxx.conf (cluster-config-file 所指的文件) 文件
八、測試集羣:(注意-c 表示進入的是集羣環境)
redis-cli.exe -c -p 7000
第三步,如今開始使用c# 客戶端訪問集羣
流行的.net客戶端有ServiceStack.Redis 和 StackExchange.Redis,其中 StackExchange.Redis 最新版已經商業化了,爲了不踩坑,本文 StackExchange.Redis+擴展工具StackExchange.Redis.Extensions.Core。
一、建立測試工程。
二、nuget 安裝StackExchange.Redis 和StackExchange.Redis.Extensions.Core.
StackExchange.Redis.Extensions.Core 支持多種序列化方式:
SerializableAttribute
on top of the class to store into Redis)SerializableAttribute
)本示例使用NewtonSoft,因此繼續nuget: StackExchange.Redis.Extensions.Newtonsoft
配置文件設置 cachePort能夠設置爲任意節點的端口號:
<configuration> <configSections> <section name="redisCacheClient" type="StackExchange.Redis.Extensions.Core.Configuration.RedisCachingSectionHandler, StackExchange.Redis.Extensions.Core" /> </configSections> <redisCacheClient allowAdmin="true" ssl="false" connectTimeout="5000" database="0" password=""> <hosts> <add host="127.0.0.1" cachePort="7000"/> </hosts> </redisCacheClient> .................. </configuration>
開始測試代碼:
//使用Newtonsoft序列化 var serializer = new NewtonsoftSerializer(); var redis = new StackExchangeRedisCacheClient(serializer); //獲取服務器信息 var info = redis.GetInfo(); foreach (var item in info) { Console.WriteLine(string.Format("{0}:{1}",item.Key,item.Value)); } redis.Add<User>("UserInfoKey",new User { Name="uucode",Age=30}); var user= redis.Get<User>("UserInfoKey"); var userCollection = new List<User>() { new User { Name="user1",Age=1}, new User { Name="user2",Age=2} }; redis.Add<List<User>>("userColl",userCollection); var userColl= redis.Get < List<User>>("userColl"); redis.Add("c2", "fdsafdas"); redis.Add("c3", "fdsafdas"); redis.Add("c4", "fdsafdas"); redis.Add("c5", "fdsafdas"); Console.Read();
以上全部的文件及源碼點擊此處下載