2015年4月23日 星期四

使用Azure的Redis Cache上手紀錄…進階篇


上一篇-基礎篇當中,我們已經知道如何在Visual Studio當中透過Web API,在Azure上Redis Cache存取簡單的型態資料如String。


但在大部分的程式情況中,我們不會只有用到簡單的型態資料(String)而已,而是有一堆物件型態的資料要處理,那這時候該怎麼辦呢?!


那這時候得對你的物件型態資料做序列化再將資料存入Redis Cache當中,對於怎樣做序列化再將資料放入Redis Cache當中,可參考"使用Azure Cache - Redis Cache 加速效能"的後半段說明。小弟我在這邊不再贅述,而是想要提出一種簡單的懶人方式,讓大家就可以快速地將物件資料存入Redis Cache當中。


因為在這邊我們寫的是.NET程式而且是ASP.NET,所以相信看倌們都知道ASP.NET的專案當中,常常會用到一套Library叫JSON.NET讓我們方便的把物件資料轉成JSON資料,快速又方便。


所以在這邊我們也可以利用JSON.NET來當作我們序列化的方式,不過效益如何就看倌要自行評估看看了。


首先,我們先回到Visual Studio的"套件管理器主控台"當中。

image
接著再鍵入"Install-Package Newtonsoft.Json”

image
安裝完成的訊息。

image
(因為原本的Web API專案就已經有安裝JSON.NET的Library,所以我們再次安裝會更新成最新版的JSON.NET的Library)


接著在我們的專案程式當中設計一個類別Contact,準備當作物件資料的資料型態。
image
再來因為要使用JSON.NET,得先引用Newtonsoft.Json這個Namespace到程式當中。
image

完成後我們來專寫一個新增或更新object data的Web API方法。在這方法當中,同樣是用QueryString來將資料傳入,並且透過固定的格式將資料的資訊分隔開來,然後再將該資料轉存成Contact的物件資料。

image

所以在這段程式碼當中的藍色框當中的程式

string data = JsonConvert.SerializeObject(aContact);

就是利用JSON.NET將物件資料轉換成String,然後再將String的資料寫入Redis Cache當中。
 
 
接著我們再撰寫一個查詢該物件資料GetDataById的Web API,以利我們查詢所塞入的資料。
image
 
其中藍色框當中的程式碼
 
aContact = JsonConvert.DeserializeObject<Contact>(str);
 
就是利用JSON.NET將String資料轉換成物件資料。
 
 
Ctrl + F5 把該專案執行起來後,再來就又是Fiddler的時間了。
 
首先,先測試UpdateObjectData這個WebAPI,鍵入以下連結測試網址"http://localhost:7911/api/myredisdemo/?objectdata=8E8565B7-3CC3-4B77-9A0F-E90AA0768B46_Hellen_0911222333_example@aaa.com_none”
 
image
 
得到200回應訊息後,點選該項目後,再切到"Inspectors"觀看回來的"Raw"資料。
 
image
 
得到"OK"無誤。
 
接著再測試查詢資料的GetDataById這個WebAPI,鍵入"http://localhost:7911/api/myredisdemo/?id=8E8565B7-3CC3-4B77-9A0F-E90AA0768B46"
 
image
 
得到200回應訊息後,點選該項目後,再切到"Inspectors"觀看回來的"Raw"資料。
 
image
 
得到藍色框當中的回應資料無誤。
 
再切到JSON當中觀看
 
image
 
得到藍色框當中的JSON資料無誤。
 
如果測試的Id是不存在的,則會得到null。
image
 
完工。
 
 
下回見…
 

參考資料:

Azure - Redis Cache:
http://blog.sanc.idv.tw/2014/08/azure-redis-cache.html

如何使用 Azure Redis 快取:
http://azure.microsoft.com/zh-tw/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/

使用Azure Cache - Redis Cache 加速效能:
http://www.dotblogs.com.tw/jaigi/archive/2015/01/08/148005.aspx

CODE-使用JSON.NET處理動態物件屬性
http://blog.darkthread.net/post-2010-06-05-json-net-jobject-example.aspx

沒有留言:

張貼留言