在記憶體中快取為:存取速度比一般隨機存取記憶體(RAM)快的一種RAM
在程式中則為:有效率地重複使用之前擷取或運算的資料
簡單介紹如何使用快取系統Redis,一個高性能的Key-Value資料庫(NoSQL的一個分支)
環境
- Net 6
- Windowss
- 套件 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值
讓我們來回顧一下程式碼做了哪些事情
- 設定連線資訊ConfigurationOptions
- 取得IDistributedCache
- 設定Key
- 取得Value,完成了簡易的Key-Value取值問題
留意
- RedisCacheOptions中的ConfigurationOptions或Configuration,請則一使用即可,否則會有覆蓋使用問題
- IDistributedCache只有Get、Set、Remove、Refresh四個功能,Redis的其他功能例如HASH、LIST則無法在此使用。
因套件本身就涵蓋StackExchange.Redis,所以自行封裝處理即可使用HASH、LIST等等,但需要考量Redis許多的問題例如Timeout - 如果有要設定快取的有效期則需使用到DistributedCacheEntryOptions,
它可以設定滑動過期時間(SlidingExpiration)、絕對過期時間(AbsoluteExpiration)和相對於現在的絕對過期時間(AbsoluteExpirationRelativeToNow)
資料參考來源