Redis 初嘗試

在記憶體中快取為:存取速度比一般隨機存取記憶體(RAM)快的一種RAM
在程式中則為:有效率地重複使用之前擷取或運算的資料

簡單介紹如何使用快取系統Redis,一個高性能的Key-Value資料庫(NoSQL的一個分支)

環境

  1. Net 6
  2. Windowss
  3. 套件 Microsoft.Extensions.Caching.StackExchangeRedis

請先行下載並安裝

本次下載的為Redis-x64-5.0.14.1.zip

在CMD下輸入
redis-server.exe redis.windows.conf

此時Redis已在運行中

建立一個測試專案本次採用的是Console

程式碼為

using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.DependencyInjection;
using StackExchange.Redis;

var configurationOptions = new ConfigurationOptions
{
    EndPoints = { "localhost:6379" },
    Ssl = false 
};

var serviceProvider = new ServiceCollection()
    .AddStackExchangeRedisCache(options => options.ConfigurationOptions = configurationOptions)
    .BuildServiceProvider();

var cache = serviceProvider.GetRequiredService<IDistributedCache>();

await cache.SetStringAsync("Key", "TEST123");

string getCache = await cache.GetStringAsync("Key");

Console.WriteLine(getCache);
Console.ReadLine();

運行後可以看到已經向Redis提取需要的KEY值

讓我們來回顧一下程式碼做了哪些事情

  1. 設定連線資訊ConfigurationOptions
  2. 取得IDistributedCache
  3. 設定Key
  4. 取得Value,完成了簡易的Key-Value取值問題

留意

  1. RedisCacheOptions中的ConfigurationOptions或Configuration,請則一使用即可,否則會有覆蓋使用問題
  2. IDistributedCache只有Get、Set、Remove、Refresh四個功能,Redis的其他功能例如HASH、LIST則無法在此使用。
    因套件本身就涵蓋StackExchange.Redis,所以自行封裝處理即可使用HASH、LIST等等,但需要考量Redis許多的問題例如Timeout
  3. 如果有要設定快取的有效期則需使用到DistributedCacheEntryOptions,
    它可以設定滑動過期時間(SlidingExpiration)、絕對過期時間(AbsoluteExpiration)和相對於現在的絕對過期時間(AbsoluteExpirationRelativeToNow)

資料參考來源

  1. https://duongnt.com/stackexchangeredis/