把旧系统迁移到.Net Core 2.0 日记 (15) --Session 改用Redis

安装Microsoft.Extensions.Caching.Redis.Core

       NuGet中搜索Microsoft.Extensions.Caching.Redis.Core并安装,此NuGet包是对Caching的拓展,即可以更换Caching存储介质

image

appsettings.json配置Redis连接字符串

       appsettings.json配置Redis连接字符串(相当于web.config里面配置appsetting节点),注意:添加位置要在Logging上面

{ "ConnectionStrings": { 
    "RedisConnection": "127.0.0.1:6379,password=xxxxxxxxx"
  },
"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

Startup.cs的ConfigureServices方法中添加引用

public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();
            services.AddDistributedRedisCache(option =>
            {       
                   //redis 数据库连接字符串
                   option.Configuration = Configuration.GetConnectionString("RedisConnection");
                   //redis 实例名
                   option.InstanceName = "master";
              });
              services.AddSession();


          }

 页面运行HttpContext.Session.GetString("key"),然后用Redis管理工具RedisDesktopManager查询Session是否入库。

 

每个客户端 InstanceName+ Guid (这个不是session的ID), 数据存储在Hash类型里的data, 不能在调试模式访问. 

hash的data是16进制的字符串,不是中文,怎么显示呢?

网上找了一下

1. 先打开命令行cmd
2. 运行chcp 65001
3.  在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定
4. redis-cli.exe -a password --raw

但是对于hash里的data还是没有用

 hash里sldexp 应该是过期时间,默认是20分钟, 但这个值是微秒吗? 好像多了个零. 因为20*60*1000*1000= 1200,000,000

猜你喜欢

转载自www.cnblogs.com/zitjubiz/p/net_core_daily_15_Session_redis.html