iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
Everything on Azure

與 Azure 培養感情的 30 天,隨時會分手。系列 第 24

Azure Redis Cache

到 Azure Portal

  1. 建立資源
  2. 查詢 Redis Cache
  3. 按下建立

建立我們的 Azure Redis Cache

  1. 填寫 DNS 名稱
  2. 選擇訂用帳戶
  3. 新建或是選擇資源群組
  4. 選擇位置
  5. 選擇定價層
  6. 按下建立

以下是部署資訊

建立完之後,我們就可以去我們的 Redis 去取得連接字串。

最後我直接在 Azure Function 上面實作簡單的 Azure Redis Cache 例子,打這個 API 輸入的參數會被快取 15 秒,15秒內再打 API 值都不會被修改,15秒過後打API 值才會被修改。

首先要先在 Azure Function 加入 function.proj 然後填入下面的 xml 他就會開始安裝套件

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
        <TargetFramework>netstandard2.0</TargetFramework> 
    </PropertyGroup> 
    <ItemGroup> 
        <PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.1.2" /> 
    </ItemGroup> 
</Project> 

接著開始寫 Redis Cache 的代碼

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using StackExchange.Redis;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        name = name ?? data?.name;

    var connString = "{DNS名稱}.redis.cache.windows.net:6380,password=金鑰=,ssl=True,abortConnect=False"; //Redis連接字串
    var redisConn = ConnectionMultiplexer.Connect(connString); //取得連線
    var db = redisConn.GetDatabase(); //取得資料庫

    var value = db.StringGet("name"); //從快取取值

    if(string.IsNullOrEmpty(value))
    {
        db.StringSet("name", name, TimeSpan.FromSeconds(15)); //把值塞給快取
    }
    else
    {
        name = value;
    }

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

結果


上一篇
Azure Container Registry
下一篇
Azure Runbook
系列文
與 Azure 培養感情的 30 天,隨時會分手。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言