標籤:
原來基於wcf寫了一個互動架構,其中自訂了一個session隊列,用於儲存用戶端串連的一些資訊。
這幾天在想如何將這個wcf架構做負載平衡,於是將session隊列拆分出來,用一個共用的記憶體進行處理,以前接觸過一下memcached,後來發現Redis比memcached更有優勢。於是開始著手研究Redis。(當然 Redis僅僅儲存一個用戶端session似乎大才小用,直接用一個ConcurrentDictionary不就能解決麼?管他呢,先研究一下咯。)
首先Redis是跨平台的,這裡再廢話一下,現在逐漸的開始轉變,覺得只要效率高,錯誤小,windows和非windows又有什麼關係?
還是回到自己擅長的.net windows環境中來....:)
首先安裝Redis伺服器,其實網上的介紹簡單明了,我的目標很簡單,跑起來就行,於是下載了一個Redis-x64-2.8.2400 windows版本的,解壓後對redis.windows.conf檔案進行配置,增加了maxheap 1024000000 最大堆的位元組數
然後運行:
redis-server.exe redis.windows.conf
正常啟動,簡單易用。
在通常的環境中,redis通常部署為守護進程。於是運行:
redis-server --service-install redis.windows.conf --loglevel verbose就部署好了,可以通過windows服務中的啟動停止來進行操作。 然後需求用戶端的串連,主要針對c#:看了兩個,一個是ServiceStack,一個是StackExchange。前者網路上的支援文章較多,但是4.0以後商業化,串連有限制,好像一個小時6000次樣,要麼用3.0的版本,考慮過後,換成了StackExchange。引用部署StackExchange也很簡單,在vs的tools中,在NuGet控制台,運行命令:PM> Install-Package StackExchange.Redis -Version 1.0.488(卸載的話PM>UnInstall-Package StackExchange.Redis -Force)就OK了。初步試用比較簡單static ConnectionMultiplexer redis = ConnectionMultiplexer.Connect();IDatabase redisdb = RedisEx.redis.GetDatabase();redisdb ....SetAdd...各種函數這裡的redis需要用一個全域的靜態變數,這樣會避免串連數多時,串連/斷開造成的頻繁操作帶來的不確定問題。最後再說一說Redis管理工具。用了一款redis-desktop-manager的,可以查看現有Redis服務中的資料,新增和刪除。 目前看來,以上Redis知識能讓我用一陣了。如遇到什麼問題,再進行補充。以下是各工具的:Redis: https://github.com/MSOpenTech/redis/releasesStackExchange: 不用下載了vs直接進行Nuget安裝管理工具: https://github.com/uglide/RedisDesktopManager/releases
這幾天對Redis的初探,寫一個階段性的東西