使用Azure Redis Cache
Cache被稱作快取或緩存,是一種提高運作效率的資料存取方式。
Redis Cache本身是一套open source軟體,以記憶體作為緩存資料的位置,我們可以把一些時常(或大量)需要被讀取,或是不常更新的靜態資料,從傳統資料庫(或其他儲存體)複製一份放入Cache DB中,以便於提高讀取時的效能。
因為資料庫或一般硬碟儲存體的讀寫是物理性的IO存取,而Redis Cache則是記憶體的讀取,當有大量的讀取發生時,位於記憶體的Redis Cache效能會明顯的比實體的讀取提高很多。
一般來說,典型的Cache機制使用方式如下:
Cache中的資料可能會定時或依照你所設定的條件更新,以便於抓取較新版的資訊。
在Azure PaaS平台上,也有現成的Redis Cache服務,你可以透過底下CLI指令來建立Azure Redis Cache服務:
#設定資料中心區域
$myLocation="eastasia"
#建立資源群組
az group create -n test-redisdemo-rg -l $myLocation
#設定redis cache名稱(取亂數以避免重複)
$redisname = "testredis" + $(get-random -minimum 10000 -maximum 100000)
#建立redis cache
az redis create -l $myLocation -g test-redisdemo-rg -n $redisname --sku Basic --vm-size c0
結果如下(回覆JSON):
當然,也可以透過底下網址,從Azure Portal建立Redis Cache:
https://portal.azure.com/#create/Microsoft.Cache
建立畫面如下:
建立完成之後,基本的使用就很簡單,你只需要從Portal上找到 Redis服務的 ConnectionString(位於存取金鑰),即可操作該Cache:
有了ConnectionString後,利用SDK,透過ConnectionMultiplexer.Connect()方法,即可存取該料庫:
var cache = ConnectionMultiplexer.Connect(connectionString)
由於上述指令使用到了 StackExchange.Redis 套件,因此你的專案程式應該要從NuGet下載安裝該套件,CLI指令如下:
dotnet add package StackExchange.Redis
底下這兩行指令,則可透過剛才建立好服務、取得連線字串後,所建立的Cache物件,以GetDatabase()方法取得db物件。然後,再嘗試寫入一筆record:
IDatabase db = cache.GetDatabase();
bool setValue = await db.StringSetAsync("test:key", "100");
寫入record的方式是 StringSetAsync(key, value);
一般Azure Redis Record是key-value的形式,value可以是常見的Json、字串、數字…binary…等均可。
key則可以是單純的字串,或是以冒號(:)隔開的字串。你可以透過 StringGetAsync(key)來取得資訊,例如:
string getValue = await db.StringGetAsync("test:key");
Console.WriteLine($"GET: {getValue}");
我在github上有放一個微軟az-204課程的Redis Cache範例程式,你可透過底下指令來取得:
git clone https://github.com/isdaviddong/az204_redisdemo.git
底下這段影片,展示透過上面的範例程式操作Redis的過程:
如此一來,即可快速的在雲端佈署出一套現成的 Redis Cache服務供開發人員使用。
留言