前提:一臺 Linux 服務器、已安裝 Docker。html
拉取 Redis 鏡像redis
docker pull redis
查詢鏡像列表docker
docker imgaes
運行 Redis的幾種方法數據庫
①運行而且設置 Redis 端口c#
docker run -p 6379:6379 -d redis:latest redis-server
②api
docker run -p 6379:6379 -d {鏡像id} redis-server
③持久化數組
將 Docker 裏的 Redis 數據持久化到物理機緩存
docker run -p 6379:6379 -v {物理機路徑}:/data -d redis:latest redis-server --appendonly yes
下載 Windows 版的 Redis 管理器服務器
Windows 版本的 Redis Desktop Manager 64位 2019.1(中文版) 下載地址 https://www.7down.com/soft/233274.htmlmvc
官方正版最新版本下載地址 https://redisdesktop.com/download
另附 Redis 學習教程:
Redis 中文網 https://www.redis.net.cn/
.NET 使用 Redis 學習 地址(貌似這個教程版本過期了) http://www.javashuo.com/article/p-mzgfsplf-du.html
搭建 Master/Slaver 模式的 Redis 集羣 http://www.javashuo.com/article/p-udsewnrp-hk.html
使用 Redis Desktop Manager 鏈接 Redis
ASP.NET Core 中,支持使用多種數據庫進行緩存,ASP.NET Core 提供了統一的接口給開發者使用。
IDistributedCache
ASP.NET Core 中,使用 IDistributedCache 爲開發者提供統一的緩存使用接口,而沒必要關注使用的是何種數據庫。
IDistributedCache]接口提供瞭如下方法操做的分佈式的緩存實現中的項:
byte[]
數組若是在緩存中找到。byte[]
數組) 到使用字符串鍵的緩存。IDistributedCache 提供的經常使用方法以下:
方法 | 說明 |
---|---|
Get(String) | 獲取Key(鍵)的值 |
GetAsync(String, CancellationToken) | 異步獲取鍵的值 |
Refresh(String) | 刷新緩存 |
RefreshAsync(String, CancellationToken) | Refreshes a value in the cache based on its key, resetting its sliding expiration timeout (if any). |
Remove(String) | 移除某個值 |
RemoveAsync(String, CancellationToken) | Removes the value with the given key. |
[Set(String, Byte], DistributedCacheEntryOptions) | Sets a value with the given key. |
[SetAsync(String, Byte], DistributedCacheEntryOptions, CancellationToken) | Sets the value with the given key. |
官方文檔很詳細https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.2
新建一個 ASP.NET Core WebApi 項目
Nuget 管理器安裝
Microsoft.Extensions.Caching.StackExchangeRedis
ConfigureServices 中使用服務
services.AddDistributedMemoryCache();
配置 Redis 服務器
services.AddStackExchangeRedisCache(options => { options.Configuration = "localhost:6379"; options.InstanceName = "mvc"; });
InstanceName 是你自定義的實例名稱,建立緩存時會以此名稱開頭。
這樣就配置好了。
修改默認生成的 ValuesController.cs。
注入緩存服務
private readonly IDistributedCache _cache; public ValuesController(IDistributedCache cache) { _cache = cache; }
設置緩存和使用緩存:
await _cache.GetAsync("{鍵名}"); _cache.SetAsync("鍵名", {值}, {設置});
刪除原來的方法,添加如下代碼:
[HttpGet("Set")] public async Task<JsonResult> SetCache(string setkey, string setvalue) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; string value = DateTime.Now.ToLongTimeString(); if (!string.IsNullOrEmpty(setvalue)) value = setvalue; await _cache.SetStringAsync(key, value); return new JsonResult(new { Code = 200, Message = "設置緩存成功", Data = "key=" + key + " value=" + value }); } [HttpGet("Get")] public async Task<JsonResult> GetCache(string setkey) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; var value = await _cache.GetStringAsync(key); return new JsonResult(new { Code = 200, Message = "設置緩存成功", Data = "key=" + key + " value=" + value }); }
在 URL 添加 QueryString 能夠設置緩存內容,若是沒有帶參數的話,就使用默認的值。
打開 https://localhost:5001/api/values/set 能夠看到設置了默認值。
或者訪問 https://localhost:5001/api/values/set?setkey=key11111&setvalue=asafesfdsreg
自定義設置緩存值。
打開 https://localhost:5001/api/values/get?setkey=key11111
能夠獲取緩存值。
使用 DistributedCacheEntryOptions 能夠設置緩存過時時間
DistributedCacheEntryOptions 有三個屬性,表示相對時間、絕對時間。
使用方法
[HttpGet("Set")] public async Task<JsonResult> SetCache(string setkey, string setvalue) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; string value = DateTime.Now.ToLongTimeString(); if (!string.IsNullOrEmpty(setvalue)) value = setvalue; var options = new DistributedCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromSeconds(20)); await _cache.SetStringAsync(key, value, options); return new JsonResult(new { Code = 200, Message = "設置緩存成功", Data = "key=" + key + " value=" + value }); }
緩存 20 秒,20秒事後此緩存將被清除。