zoukankan      html  css  js  c++  java
  • Configuring Redis for ASP.NET Core Session Store(转载)

    原文:https://dotnetthoughts.net/configuring-redis-for-aspnet-core-session-store/

    Posted by Anuraj on Monday, November 14, 2016 Reading time :1 minute

    ASP.NET Core Redis Cache Session

    This post is about Configuring Redis for ASP.NET Core Session Store. Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries. Redis works with an in-memory dataset. it also supports persisting the dataset to disk. Moreover, It provides master-slave asynchronous replication. Redis is not officially supported on windows. However, the Microsoft Open Tech group develops and maintains Windows port targeting Win64 available here. You can install redis using chocolatey package manager, using choco install redis-64 command. Once you install redis you can run redis-server command to start the redis server.

    Redis server running local system

    You can test the installation using redis-cli command. You can set and get the values. For setting the values you need to use command like set key value and for getting the values get key. To list all the keys you can execute keys * command. To remove all the values flushall command can be used.

    To use Redis in ASP.NET Core, you need to reference, Microsoft.Extensions.Caching.Redis.Core package. And you can configure the Redis Cache using AddDistributedRedisCache method in the ConfigureServices method.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedRedisCache(options =>
        {
            options.InstanceName = "Sample";
            options.Configuration = "localhost";
        });
        services.AddMvc();
    }

    Unlike previous versions of ASP.NET, Session in ASP.NET Core doesn’t will not be available by default. You need to configure session. To use session first you need to update the project.json with Microsoft.AspNetCore.Session package. And once you added it you need to add session and configure it.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedRedisCache(options =>
        {
            options.InstanceName = "Sample";
            options.Configuration = "localhost";
        });
        services.AddSession();
        services.AddMvc();
    }
    
    public void Configure(IApplicationBuilder app, 
        IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseSession();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

    And here is the project.json file changes

    "Microsoft.Extensions.Caching.Redis.Core": "1.0.3",
    "Microsoft.AspNetCore.Session": "1.0.0"

    Now in code you can use Set and TryGetValue methods to set and get values from session.

    var bytes = Encoding.UTF8.GetBytes("World");
    HttpContext.Session.Set("Hello", bytes);

    And here is the code to get values.

    var bytes = default(byte[]);
    HttpContext.Session.TryGetValue("Hello", out bytes);
    var content = Encoding.UTF8.GetString(bytes);

    Get and Set methods in session is accepting byte array, so you need to convert string values to bytes.

    Happy Programming :)

  • 相关阅读:
    DragonBones软件使用笔记 (pos工具、IK约束、关键帧等)
    【微信小游戏】CocosCreator 分包
    CocosCreator Shader笔记 (TheBookOfShader、渐变色、攻击闪白特效)
    【插件】cocos inspctor试用
    【微信小游戏】CocosCreator 微信小游戏排行榜
    [已解决]报错:The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.
    Crontab 定时执行脚本配置
    【GIS】Mapbox、GeoServer矢量瓦片
    【PostGIS】实时坐标-电子围栏-判断-(参考遥想公瑾当年postgres+socket.io+nodejs实时地图应用实践)
    【MinIO】大文件上传配置
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/12262617.html
Copyright © 2011-2022 走看看