使用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服務供開發人員使用。

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用Qdrant向量資料庫實作語意相似度比對

專業的價值...

讓 LINE Bot 對談機器人顯示 "Loading..." 動畫

使用 Airtable 在小型需求上取代傳統資料庫