日韩性视频-久久久蜜桃-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 | av最新| 久久er99热精品一区二区 | 91精品入口 | 日韩黄色网页 | 免费播放片大片 | 亚洲av男人的天堂在线观看 | www.夜夜夜 | 日本两性视频 | 初尝黑人巨炮波多野结衣 | 老牛影视av牛牛影视av | 一区二区日韩视频 | 精品成人久久久 | 可以看av的网址 | 欧美日韩三级在线 | 天天射天天射 | 四虎在线影视 | 麻豆婷婷 | 日韩免费观看一区二区三区 | 狠狠五月天 | 九热这里只有精品 | 亚洲黄色在线网站 | 欧美88av | 无码少妇一区二区三区芒果 | 国产精品69久久久久 | 亚洲激情网址 | 亚洲精品成人无码熟妇在线 | avtt在线 | 在线免费看黄 | 日韩欧美视频一区二区三区 | 精品国产伦一区二区三区 | 大象传媒成人在线观看 | 国产无遮挡裸体免费视频 | 丁香婷婷一区二区三区 | 国产精品一区网站 | 久久丫精品忘忧草西安产品 | 亚洲春色在线 | 成人1区2区 | 国产乱码精品一区二区 | 免费观看一区二区 | 51av在线 | 亚洲精品白浆高清久久久久久 | 免费观看毛片视频 | 久久久久久久久久一区 | 国产精品一区在线观看 | 欧美日韩一区二区三区69堂 | 222aaa| 亚洲精品视频在线观看免费 | 瑟瑟视频在线免费观看 | 在线免费观看黄视频 | 张柏芝亚洲一区二区三区 | 国产中文字字幕乱码无限 | 杂技xxx裸体xxxx欧美 | 玖玖精品在线 | 黄色.com | 中文字幕无码日韩专区免费 | 日本美女一区二区 | 日韩欧美中文字幕精品 | www久久久天天com | 日本黄色视屏 | 成人动漫av | 日本视频免费 | 亚洲欧美一区二区三区在线 | 91av色| h片网站在线观看 | 日本高清中文字幕 | 免费看国产黄色 | 在线麻豆 | 欧美资源网 | 岳乳丰满一区二区三区 | 久久影视精品 | 国产成人免费片在线观看 | 小嫩嫩12欧美 | 久久免费视频99 | 色婷婷综合久久久久中文字幕 | 激情综合激情五月 | 国产午夜电影在线观看 | 五月激情开心网 | 国产av无码专区亚洲av麻豆 | 免费的黄色的视频 | 天天做天天看 | 日本黄在线观看 | 欧美三级午夜理伦三级老人 | 色在线免费 | 久久精品视频在线观看 | wwww在线观看 | 亚洲男人的天堂在线 | 在线观看av日韩 | 欧美性生交xxxxx久久久缅北 | 欧美人与禽zoz0性3d | 成人深夜免费视频 | 午夜特片网 | 美女扒开内裤让男人桶 | 潮喷失禁大喷水aⅴ无码 | 真实的国产乱xxxx在线91 | 超碰视屏| 黄色观看网站 | 亚洲福利av|