安装、部署
首先在服务器安装redis,我使用的是免安装版本
cd到安装目录,执行命令(注意一定要指定配置文件)
redis-server.exe redis.windows.conf
同时本地也安装redis,cd到安装目录,连接服务器redis
redis-cli -h <ip地址> -p 6379
这时候可能会报错,提示:No connection is available to service this operation: EVAL。远程主机强迫关闭了一个现有的连接
这时候修改服务器上启动的对应配置文件(redis.windows.conf)将protected-mode设置为no
bind 0.0.0.0
protected-mode no
bind地址,原来是127.0.0.1,改为 bind 0.0.0.0 这样的话其它的ip地址也可以连接过来了。
asp.net core中使用
首先安装nuget包:Microsoft.Extensions.Caching.Redis
然后往容器注入
services.AddDistributedRedisCache(options =>
{
options.Configuration ="{ip地址:端口号},abortconnect=false";
options.InstanceName = "RedisDemo";
});
在控制器中的构造函数注入
private readonly IDistributedCache _distributedCache;
public HomeController( IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
在方法中获取key,如果没有,就传入一个
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();
//设置30秒过期
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);
}
}
修改下视图,展示出来
@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>