ASP.NET Core使用Redis
[删除(380066935@qq.com或微信通知)]
更好的阅读体验请查看原文:https://blog.csdn.net/qq_42799562/article/details/111599159
ASP.NET Core使用Redis,目前我还未找到官方文档,不过总有高手能整理出来,找了网上一些博客,自己整理学习后,也简单记录下吧。NuGet: StackExchange.Redis,Microsoft.Extensions.Caching.Redis这两个包即可。
配置appsettings.json,代码如下:
"ConnectionStrings": {
"Redis": "42.193.5.237:6379,password=密码,defaultdatabase=0,8.135.26.156:6379,password=密码,defaultdatabase=0,154.8.183.144:6379,password=密码,defaultdatabase=0,39.107.65.223:6379,password=密码,defaultdatabase=0,183.60.104.198:6379,password=密码,defaultdatabase=0,124.71.148.52:6379,password=密码,defaultdatabase=0"
}
这里呢需要着重说明一下,由于我使用的是Redis集群模式,所以配置了6个ip服务器地址,当然如果你还未搭建好Redis集群,单机模式也是可以使用的,你只需要把所有ip去掉,保留其中一个即可。如:127.0.0.1:6379,password=密码,database=0。当然,如果你的Redis未配置密码,去掉password属性也是可以的,不过为了安全起见,还是配置一下吧。 配置完成后,我们需要在Startup.cs的ConfigureServices方法中,注入一下,还是相当简单的一个过程。注册代码如下:
public void ConfigureServices(IServiceCollection services)
{
//连接字符串
string _connectionString = Configuration.GetConnectionString("Redis");
services.AddDistributedRedisCache(options =>
{
options.Configuration = _connectionString;
});
services.AddControllersWithViews().AddRazorRuntimeCompilation();
}
注入完成后,我们就可以使用了:
GetString(key):读取字符串
SetString(key,value):存储字符串
Get(key):读取存储对象,读取到的是byte[],通过自定义转换成json
Set(key,byte[] value):将存储对象转换**byte[]**存储
新建一个控制器,进行.NET Core经典的默认构造函数注入:
public class HomeController : Controller
{
/// <summary>
/// 构造函数进行Redis依赖注入
/// </summary>
private readonly IDistributedCache distributed;
public HomeController(IDistributedCache _distributed)
{
distributed = _distributed;
}
/// <summary>
/// 使用Redis读取和存储
/// </summary>
/// <returns></returns>
public IActionResult Index()
{
//创建存储对象
Account account = new Account()
{
Id = Guid.NewGuid().ToString().Replace("-", ""),
UserName = "Administrator",
Password = "Zm@76gzbk"
};
//转换json字符串
string obj = JsonConvert.SerializeObject(account);
//转换byte[]
byte[] bytes = Encoding.UTF8.GetBytes(obj);
//设置过期时间
var options = new DistributedCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromSeconds(30));
//使用Set存储Redis对象
distributed.Set("timeout", bytes, options);
//使用Get读取Redis存储对象
byte[] value = distributed.Get("timeout");
string valueStr = Encoding.UTF8.GetString(value);//转换字符串
//格式化json对象
return Json(JsonConvert.DeserializeObject<Account>(valueStr));
}
/// <summary>
/// 创建一个存储对象
/// </summary>
class Account
{
/// <summary>
/// Id
/// </summary>
public string Id { get; set; }
/// <summary>
/// UserName
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Password
/// </summary>
public string Password { get; set; }
}
}
最后,我们来看一下Redis是否成功存储,json解析是否正确。
到此,我们的ASP.NET Core使用Redis圆满完成,与其欣羡,不如策马扬鞭,自行体验一番来的更加痛快。