日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發(fā)布時(shí)間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 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之前要注入cacheing,因?yàn)閟ession依賴于cache進(jìn)行存儲(chǔ) services.AddCaching();services.AddSession();

添加了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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。