安裝、部署
首先在服務(wù)器安裝redis,我使用的是免安裝版本
cd到安裝目錄,執(zhí)行命令(注意一定要指定配置文件)
redis-server.exe redis.windows.conf
同時(shí)本地也安裝redis,cd到安裝目錄,連接服務(wù)器redis
redis-cli -h <ip地址> -p 6379
這時(shí)候可能會(huì)報(bào)錯(cuò),提示:No connection is available to service this operation: EVAL。遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接
這時(shí)候修改服務(wù)器上啟動(dòng)的對(duì)應(yīng)配置文件(redis.windows.conf)將protected-mode設(shè)置為no
bind 0.0.0.0
protected-mode no
bind地址,原來(lái)是127.0.0.1,改為 bind 0.0.0.0 這樣的話其它的ip地址也可以連接過(guò)來(lái)了。

image.png
asp.net core中使用
首先安裝nuget包:Microsoft.Extensions.Caching.Redis
然后往容器注入
services.AddDistributedRedisCache(options =>
{
options.Configuration ="{ip地址:端口號(hào)},abortconnect=false";
options.InstanceName = "RedisDemo";
});
在控制器中的構(gòu)造函數(shù)注入
private readonly IDistributedCache _distributedCache;
public HomeController( IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
在方法中獲取key,如果沒(méi)有,就傳入一個(gè)
public IActionResult Index()
{
var name = _distributedCache.Get("name-key");
if (name == null)
{
var obj = new Dictionary<string, string>
{
["firstName"] = "Curry",
["lastName"] = "Zhang"
};
var str = JsonConvert.SerializeObject(obj);
byte[] encoded = Encoding.UTF8.GetBytes(str);
//var options = new DistributedCacheEntryOptions();
//設(shè)置30秒過(guò)期
var options =new DistributedCacheEntryOptions().SetSlidingExpiration(TimSan.FromSeconds(30));
_distributedCache.Set("name-key", encoded, options);
return View(obj);
}
else
{
var str = Encoding.UTF8.GetString(name);
var obj=JsonConvert.DeserializeObject<Dictionary<string,string>>(sr);
return View(obj);
}
}
修改下視圖,展示出來(lái)
@model Dictionary<string, string>
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
@foreach (var kv in Model)
{
<h3>
@kv.Key:@kv.Value
</h3>
}
</div>