ASP.NET Core使用Redis

ASP.NET Core使用Redis,目前我还未找到官方文档,不过总有高手能整理出来,找了网上一些博客,自己整理学习后,也简单记录下吧。NuGetStackExchange.RedisMicrosoft.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.csConfigureServices方法中,注入一下,还是相当简单的一个过程。注册代码如下:

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圆满完成,与其欣羡,不如策马扬鞭,自行体验一番来的更加痛快。

猜你喜欢

转载自blog.csdn.net/qq_42799562/article/details/111599159
今日推荐