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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

stackexchange.mysql_.net core使用redis基于StackExchange.Redis

發布時間:2024/7/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stackexchange.mysql_.net core使用redis基于StackExchange.Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.net core使用redis基于StackExchange.Redis教程,具體如下

一.添加引用包

StackExchange.Redis

Microsoft.Extensions.Configuration

二.修改配置文件 appsettings.json

{

"RedisConfig": {

"Redis_Default": {

"Connection": "127.0.0.1: 6379",

"InstanceName": "Redis1: "

},

"Redis_6": {

"Connection": "127.0.0.1: 6379",

"DefaultDatabase": 6,

"InstanceName": "Redis2: "

}

}

}

三.簡單封裝RedisClient.cs類

public class RedisClient : IDisposable

{

private IConfigurationRoot _config;

private ConcurrentDictionary _connections;

public RedisClient(IConfigurationRoot config)

{

_config = config;

_connections = new ConcurrentDictionary();

}

///

/// 獲取ConnectionMultiplexer

///

/// RedisConfig配置文件

///

private ConnectionMultiplexer GetConnect(IConfigurationSection redisConfig)

{

var redisInstanceName = redisConfig["InstanceName"];

var connStr = redisConfig["Connection"];

return _connections.GetOrAdd(redisInstanceName, p => ConnectionMultiplexer.Connect(connStr));

}

///

/// 檢查入參數

///

/// RedisConfig配置文件中的 Redis_Default/Redis_6 名稱

///

private IConfigurationSection CheckeConfig(string configName)

{

IConfigurationSection redisConfig = _config.GetSection("RedisConfig").GetSection(configName);

if (redisConfig == null)

{

throw new ArgumentNullException($"{configName}找不到對應的RedisConfig配置!");

}

var redisInstanceName = redisConfig["InstanceName"];

var connStr = redisConfig["Connection"];

if (string.IsNullOrEmpty(redisInstanceName))

{

throw new ArgumentNullException($"{configName}找不到對應的InstanceName");

}

if (string.IsNullOrEmpty(connStr))

{

throw new ArgumentNullException($"{configName}找不到對應的Connection");

}

return redisConfig;

}

///

/// 獲取數據庫

///

///

/// 默認為0:優先代碼的db配置,其次config中的配置

///

public IDatabase GetDatabase(string configName = null, int? db = null)

{

int defaultDb = 0;

IConfigurationSection redisConfig = CheckeConfig(configName);

if (db.HasValue)

{

defaultDb = db.Value;

}

else

{

var strDefalutDatabase = redisConfig["DefaultDatabase"];

if (!string.IsNullOrEmpty(strDefalutDatabase) && Int32.TryParse(strDefalutDatabase, out var intDefaultDatabase))

{

defaultDb = intDefaultDatabase;

}

}

return GetConnect(redisConfig).GetDatabase(defaultDb);

}

public IServer GetServer(string configName = null, int endPointsIndex = 0)

{

IConfigurationSection redisConfig = CheckeConfig(configName);

var connStr = redisConfig["Connection"];

var confOption = ConfigurationOptions.Parse((string)connStr);

return GetConnect(redisConfig).GetServer(confOption.EndPoints[endPointsIndex]);

}

public ISubscriber GetSubscriber(string configName = null)

{

IConfigurationSection redisConfig = CheckeConfig(configName);

return GetConnect(redisConfig).GetSubscriber();

}

public void Dispose()

{

if (_connections != null && _connections.Count > 0)

{

foreach (var item in _connections.Values)

{

item.Close();

}

}

}

}

因為RedisClient 中使用了ConcurrentDictionary

所以,有了RedisClientSingleton.cs類

public class RedisClientSingleton

{

private static RedisClient _redisClinet;

private RedisClientSingleton() { }

private static object _lockObj = new object();

public static RedisClient GetInstance(IConfigurationRoot config)

{

if (_redisClinet == null)

{

lock (_lockObj)

{

if (_redisClinet == null)

{

_redisClinet = new RedisClient(config);

}

}

}

return _redisClinet;

}

}

四.測試

1、控制臺程序

1)創建一個Controller程序

2)添加引用包

Microsoft.Extensions.Configuration

Microsoft.Extensions.Configuration.Json

3)添加appsettings.json

添加以下

"RedisConfig": {

"Redis_Default": {

"Connection": "127.0.0.1:6379",

"InstanceName": "Redis1:"

},

"Redis_6": {

"Connection": "127.0.0.1:6379",

"DefaultDatabase": 6,

"InstanceName": "Redis2:"

}

}

4)修改Program類

①添加引用using Microsoft.Extensions.Configuration;

②修改Main

static void Main(string[] args)

{

var builder = new ConfigurationBuilder()

.SetBasePath(Directory.GetCurrentDirectory())

.AddJsonFile("appsettings.json");

IConfigurationRoot configuration = builder.Build();

var redisClient = RedisClientSingleton.GetInstance(configuration);

var redisDatabase = redisClient.GetDatabase("Redis_Default");

redisDatabase.StringSet("TestStrKey", "TestStrValue");

}

③運行后可以看到

2、web程序

①創建一個core的mvc項目

②修改Startup.cs文件

修改ConfigureServices函數

public void ConfigureServices(IServiceCollection services)

{

...

services.AddSingleton(Configuration);

...

}

其中的Configuration是 public IConfigurationRoot Configuration { get; }

③創建一個TestController

在修改構造函數

SimpleRedisExt _redisExt;

public TokenTranslateController(IConfigurationRoot config)//, IConfigurationRoot config)

{

_config = config;

IDatabase redisDataBase = RedisClientSingleton.GetInstance(_config).GetDatabase("Redis_Default");

}

public string Post(string value)

{

redisDataBase.StringSet("TestMvcRedis", value);

}

④運行value = TestMvcRedisValue 后得到

隨手寫的,寫得比較糙。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的stackexchange.mysql_.net core使用redis基于StackExchange.Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜噜噜 | 天堂一区二区三区 | 天天操 夜夜操 | 一区二区三区视频在线免费观看 | 亚洲精品免费电影 | 性色av一区| 国产成人一区二区三区 | 这里只有精品9 | 涩涩天堂 | 日韩成人福利 | 国产免费av一区二区三区 | 性欧美精品 | 伊人55| 哈利波特3在线观看免费版英文版 | 一区二区三区在线 | 国产又粗又猛又爽又黄的视频一 | www.国产精品.com | 在线一区二区三区视频 | 国产又粗又猛又色 | 国精产品一区一区三区有限公司杨 | 日韩欧美一级视频 | 久久精品国产免费看久久精品 | 国产视频在线观看视频 | 免费精品视频在线 | 日韩美女黄色 | 男操女视频在线观看 | 亚洲一区 中文字幕 | 久久免费视频6 | 亚洲精品成人网 | 午夜视频福利在线观看 | 国产91在线看 | 九色porny视频 | 国产男女裸体做爰爽爽 | 91视频最新地址 | 特级西西444www高清大视频 | 88av网| 亚洲精品国偷拍自产在线观看蜜桃 | 午夜伦理av | 国产18禁黄网站免费观看 | 熊出没之冬日乐翻天免费高清观看 | 久久国产精品精品国产 | 亚洲精品综合在线 | 天堂中文资源在线观看 | 痴女扩张宫交脱垂重口小说 | xnxx国产| 日韩一级片av | 中文字幕日韩人妻在线视频 | 亚洲xx网 | 欧美日韩视频网站 | 美女100%无挡 | 91狠狠操| 精品人妻一区二区三区久久嗨 | 欧美肥妇bwbwbwbxx | 性色欲情网站iwww九文堂 | 免费一级片网址 | 人人看超碰 | 本站只有精品 | 国产精品亚洲成在人线 | www.超碰在线观看 | 日韩一级黄色大片 | 青青草这里只有精品 | 亚洲一区天堂 | 亚洲精品久久久蜜桃网尤妮丝 | 成人精品视频一区二区三区尤物 | 欲求不满在线小早川怜子 | 欧美激情福利 | 99精品视频一区二区三区 | 日韩天天干 | 在线观看日韩国产 | 亚洲国产精品久久久久久 | 久久午夜电影网 | 国产日韩一区二区三区 | 亚洲妇女无套内射精 | 亚洲国产精品自拍 | 国产精品久久久久久久久免费软件 | 国产欧美激情在线观看 | 国产精品人成 | 国产另类综合 | 亚洲精品成人片在线观看精品字幕 | 免费看黄的网址 | 美女搞黄视频网站 | 成人av手机在线观看 | 欧美激情一区二区三区蜜桃视频 | 色爱亚洲| 欧美精品成人 | 日韩福利视频一区 | 污漫在线观看 | 精品国产黄 | 亚洲专区在线 | av免费影院 | 高清二区 | 无码久久精品国产亚洲av影片 | 免费在线观看av网站 | 性欧美久久久 | 林雅儿欧洲留学恋爱日记在线 | www.18av| 91大神在线看 | 久久久.com | 国产在线视频你懂得 |