您的位置:首页 > 数据库 > Redis

asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

2016-06-18 07:56 1261 查看

目录

Redis 介绍asp.net core Session 介绍Redis & Session 实例讲解Session的使用使用 Protobuf 给 Session添加扩展方法

Redis 介绍

下面是Redis官网的介绍: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, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.Redis 是一个开源的(基于BSD许可),内存数据存储结构,常用作数据库,缓存,和消息队列。它支持如字符串、哈希表、列表、集合、排序集范围查询、位图、hyperloglogs半径和地理空间索引与查询。Redis内置主从连接,Lua脚本、LRU回收,事务和不同级别文件持久化,并提供了利用集群的主从切换和自动分区等来保证高可用性。Redis的深入介绍我就直接开传送门了,不是本篇的重点,但是我给你们整理了一下,你们还是要感谢我滴:redis 高可用部署及监控:http://blog.sina.com.cn/s/blog_75ad98f30101fwqj.htmlredis 主从连接:http://www.tuicool.com/articles/fAnYFbredis 事务: http://redisbook.readthedocs.io/en/latest/feature/transaction.htmlredis 内存回收LRU:http://www.open-open.com/lib/view/open1427547789059.htmlredis 数据持久化:http://qifuguang.me/2015/10/13/Redis%E6%8C%81%E4%B9%85%E5%8C%96/以上知识学习完,使用和面试时应付Redis的提问应该不成问题了。

asp.net core session 介绍

session本身是一个很难解释的名词,在http中session代表服务器与浏览器的一次会话过程,这个过程可能一直,也可能间断的。asp.net core中的session以中间件的方式提供给我们来使用。下面来看一下使用方法:首先,添加session的NuGet包
Microsoft.AspNetCore.Http.Abstractions
到项目中,在
startup.cs
文件的
ConfigureServices(IServiceCollection services)
函数中,使用
app.UseSession()
app.UseCaching()
来使用session.
//在使用session之前要注入cacheing,因为session依赖于cache进行存储
services.AddCaching();

services.AddSession();
添加了session之后就需要有存储session的地方,可以使用内存存储,也可以使用其他自定义存储,比如redis或者SQL Server等。
// 重要: session的注册必须在UseMvc之前,因为MVC里面要用 app.UseSession();

app.UseMvc(routes =>
{
   routes.MapRoute(        name: "default",        template: "{controller}/{action}/{id?}",        defaults: new { controller = "Home", action = "Index" });
});

Redis & Session 实例讲解

要在Session中使用Redis,只需要把
services.AddCaching();
换成
services.AddDistributedRedisCache();
就可以了,如下:
services.AddDistributedRedisCache(option =>
   {
   //redis 数据库连接字符串        option.Configuration = Configuration.GetConnectionString("RedisConnection");
       
       //redis 实例名        option.InstanceName = "master";
   }
);

Session的使用

在 asp.net core 的 MVC Controller 中,你可以
HttpContext.Session
来获取Session对象。如果不是在 Controller 中需要使用 Session 的话,可以使用
IHttpContextAccessor
这个接口通过注入的方式来获取Session。以下是在 Controller 中使用Session,需要引入
Microsoft.AspNetCore.Http
空间:
以下是在除了 Controller 的其他地方使用 Session:

使用 Protobuf 给 Session添加扩展方法

默认情况下,我们只能存储
byte[]
到我们的Session当中,这让我们使用起来很不方便,在
Microsoft.HttpCore.Extension
中 Microsoft 给提供了一个SetString,SetInt32 和GetString,GetInt32的方法,但是在很多情况下,我们是需要使用Session来存储一个对象的,那么此时就需要给Session添加一个扩展方法。为了追求效率和性能,我们选择Google的Protobuf序列化组件,而不使用Json.Net,在性能方面,Protobuf要比XML或者Json效率高很多。在Nuget包中引入
protobuf-net
使用Protobuf-net序列化,需要在序列化的对象打上[ProtoContract][ProtoMember]等标记。Ps:目前Redis的扩展
Microsoft.Extensions.DependencyInjection
下面的
AddDistributedRedisCache
还不支持RC2,可以去github上搜索源代码,添加到项目中相关文章:ASP.NET Core 1.0 入门——了解一个空项目ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1).NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)使用VS Code开发ASP.NET Core 应用程序dotnet run是如何启动asp.net core站点的ASP.NET Core提供模块化Middleware组件“dotnet restore"和"dotnet run"都做了些什么?探秘 dotnet run 如何运行 .NET Core 应用程序.NET Portability Analyzer 已开源ASP.NET Core的配置(1):读取配置信息ASP.NET Core的配置(2):配置模型详解.NET Core 1.0 RC2 历险之旅使用VS Code开发 调试.NET Core 应用程序让我们Core在一起:ASP.NET Core & .NET Core.NET Core VS Code 环境配置官方博客明确了 .NET Core RC2/RTM 时间表.NET Core全新的配置管理[共9篇]利用记事本创建一个ASP.NET Core RC2 MVC应用微软.NET 正式劈腿成功,横跨所有平台.NET Core 1.0 CentOS7 尝试解读发布:.NET Core RC2 and .NET Core SDK Preview 1[.NET Core].NET Core R2安装及示例教程ASP.NET Core 开发-中间件(Middleware)结合Jexus + Kestrel 部署 asp.net core 生产环境通过Jexus 部署 dotnetcore版本MusicStore 示例程序ASP.NET Core 中文文档 第一章 入门用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API用 Visual Studio 发布一个 Azure 云 Web 应用程序ASP.NET Core MVC 与 Visual Studio 入门第二章指南(4.2)添加 ControllerDotNet Core 介绍asp.net core 中间件详解及项目实战教你实践ASP.NET Core Authorization(免看文档教程)原文地址:http://www.cnblogs.com/savorboard/p/5592948.html.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: