asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存
目錄
Redis 介紹
asp.net core Session 介紹
Redis & Session 實(shí)例講解
Session的使用
使用 Protobuf 給 Session添加擴(kuò)展方法
Redis 介紹
下面是Redis官網(wǎng)的介紹:
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 是一個(gè)開源的(基于BSD許可),內(nèi)存數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),常用作數(shù)據(jù)庫,緩存,和消息隊(duì)列。它支持如字符串、哈希表、列表、集合、排序集范圍查詢、位圖、hyperloglogs半徑和地理空間索引與查詢。Redis內(nèi)置主從連接,Lua腳本、LRU回收,事務(wù)和不同級(jí)別文件持久化,并提供了利用集群的主從切換和自動(dòng)分區(qū)等來保證高可用性。
Redis的深入介紹我就直接開傳送門了,不是本篇的重點(diǎn),但是我給你們整理了一下,你們還是要感謝我滴:
redis 高可用部署及監(jiān)控:http://blog.sina.com.cn/s/blog_75ad98f30101fwqj.html
redis 主從連接:http://www.tuicool.com/articles/fAnYFb
redis 事務(wù):?http://redisbook.readthedocs.io/en/latest/feature/transaction.html
redis 內(nèi)存回收LRU:http://www.open-open.com/lib/view/open1427547789059.html
redis 數(shù)據(jù)持久化:http://qifuguang.me/2015/10/13/Redis%E6%8C%81%E4%B9%85%E5%8C%96/
以上知識(shí)學(xué)習(xí)完,使用和面試時(shí)應(yīng)付Redis的提問應(yīng)該不成問題了。
asp.net core session 介紹
session本身是一個(gè)很難解釋的名詞,在http中session代表服務(wù)器與瀏覽器的一次會(huì)話過程,這個(gè)過程可能一直,也可能間斷的。
asp.net core中的session以中間件的方式提供給我們來使用。
下面來看一下使用方法:
首先,添加session的NuGet包Microsoft.AspNetCore.Http.Abstractions到項(xiàng)目中,在startup.cs文件的ConfigureServices(IServiceCollection services)函數(shù)中,使用app.UseSession()和app.UseCaching()來使用session.
添加了session之后就需要有存儲(chǔ)session的地方,可以使用內(nèi)存存儲(chǔ),也可以使用其他自定義存儲(chǔ),比如redis或者SQL Server等。
// 重要: session的注冊(cè)必須在UseMvc之前,因?yàn)镸VC里面要用 app.UseSession();app.UseMvc(routes => {routes.MapRoute( ? ? ? ?name: "default", ? ? ? ?template: "{controller}/{action}/{id?}", ? ? ? ?defaults: new { controller = "Home", action = "Index" }); });Redis & Session 實(shí)例講解
要在Session中使用Redis,只需要把services.AddCaching();換成services.AddDistributedRedisCache();就可以了,如下:
services.AddDistributedRedisCache(option => {//redis 數(shù)據(jù)庫連接字符串 ? ? ? ?option.Configuration = Configuration.GetConnectionString("RedisConnection");//redis 實(shí)例名 ? ? ? ?option.InstanceName = "master";} );Session的使用
在 asp.net core 的 MVC Controller 中,你可以HttpContext.Session來獲取Session對(duì)象。
如果不是在 Controller 中需要使用 Session 的話,可以使用IHttpContextAccessor這個(gè)接口通過注入的方式來獲取Session。
以下是在 Controller 中使用Session,需要引入Microsoft.AspNetCore.Http空間:
以下是在除了 Controller 的其他地方使用 Session:
使用 Protobuf 給 Session添加擴(kuò)展方法
默認(rèn)情況下,我們只能存儲(chǔ)byte[]到我們的Session當(dāng)中,這讓我們使用起來很不方便,在Microsoft.HttpCore.Extension中 Microsoft 給提供了一個(gè)SetString,SetInt32 和GetString,GetInt32的方法,但是在很多情況下,我們是需要使用Session來存儲(chǔ)一個(gè)對(duì)象的,那么此時(shí)就需要給Session添加一個(gè)擴(kuò)展方法。
為了追求效率和性能,我們選擇Google的Protobuf序列化組件,而不使用Json.Net,在性能方面,Protobuf要比XML或者Json效率高很多。
在Nuget包中引入protobuf-net:
使用Protobuf-net序列化,需要在序列化的對(duì)象打上[ProtoContract][ProtoMember]等標(biāo)記。
Ps:目前Redis的擴(kuò)展Microsoft.Extensions.DependencyInjection下面的AddDistributedRedisCache還不支持RC2,可以去github上搜索源代碼,添加到項(xiàng)目中
相關(guān)文章:
ASP.NET Core 1.0 入門——了解一個(gè)空項(xiàng)目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡(jiǎn)介
云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)
使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序
dotnet run是如何啟動(dòng)asp.net core站點(diǎn)的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運(yùn)行 .NET Core 應(yīng)用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險(xiǎn)之旅
使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環(huán)境配置
官方博客明確了 .NET Core RC2/RTM 時(shí)間表
.NET Core全新的配置管理[共9篇]
利用記事本創(chuàng)建一個(gè)ASP.NET Core RC2 MVC應(yīng)用
微軟.NET 正式劈腿成功,橫跨所有平臺(tái)
.NET Core 1.0 CentOS7 嘗試
解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發(fā)-中間件(Middleware)
結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境
通過Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創(chuàng)建首個(gè) ASP.NET Core 應(yīng)用程序
用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個(gè) Web API
用 Visual Studio 發(fā)布一個(gè) Azure 云 Web 應(yīng)用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
教你實(shí)踐ASP.NET Core Authorization(免看文檔教程)
原文地址:http://www.cnblogs.com/savorboard/p/5592948.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JFlow CCFlow工作流引擎北京培
- 下一篇: asp.net core 中间件详解及项