.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相关推荐

  1. .net core 使用redis 基于 StackExchange.Redis

    一.添加引用包 StackExchange.Redis Microsoft.Extensions.Configuration 二.修改配置文件 appsettings.json {"Redi ...

  2. dommel mysql_.Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  3. csredis封装_ASP.NET Core 2.0下使用Redis——基于CSRedis实现

    前几天挖了个坑,今天就来填这个坑了.关于在ASP.NET Core 2.0下使用Redis的问题,目前StackExchange.Redis已经支持.Net Core 2.0了,而微软提供的Micro ...

  4. (三)Redis for StackExchange.Redis

    目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis StackExchange.Re ...

  5. 怎样在Redis通过StackExchange.Redis 存储集合类型List

    StackExchange 是由StackOverFlow出品, 是对Redis的.NET封装,被越来越多的.NET开发者使用在项目中. 绝大部分原先使用ServiceStack的开发者逐渐都转了过来 ...

  6. ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法

    ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法 一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类 ...

  7. .Net大杀器之基于Newlife.Redis的可重复消费+共享订阅队列来替换第三方MQ

    一.前言 消息队列(Message Queue)是分布式系统必不可少的中间件,大部分消息队列产品(如RocketMQ/RabbitMQ/Kafka等)要求团队有比较强的技术实力,不适用于中小团队,并且 ...

  8. redis 基于主从复制的 rce 利用方式

    在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式,比起以前的利用方式来说,这种利用方式更为 ...

  9. javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...

    K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...

最新文章

  1. XtraBackup
  2. “最粉嫩”的JVM垃圾回收器及算法,王者笔记!
  3. SDN控制器构建原理方法—Vecloud
  4. 【深入理解Java虚拟机学习笔记】第三章 垃圾收集器与内存分配策略
  5. 4.16访问日志不记录静态文件,访问日志切割以及静态元素过期时间
  6. vmware中nat模式上网
  7. ODI Studio(问题5)ORA-12899:列的长度不相同
  8. 破解版的ABBYY FineReader OCR文字识别软件,真的好用吗?
  9. Springboot结合Redis实现分布式定时任务
  10. arcface的前世今生
  11. 金蝶生成凭证模板_软件-金蝶外购入库凭证模版
  12. 移动硬盘插入提示需要格式化RAW_移动硬盘数据恢复
  13. 第7-9节项目2-歌手大奖赛计分系列(1)
  14. 安卓逆向笔记--爱加密新老对比分析
  15. VBA之正则表达式(33)-- 网页表格提取数据
  16. UE4 actor碰到炸弹血条减少
  17. DM8 数据守护(Data Watch)搭建
  18. LSTM 无法预测股票价格
  19. ESP8266-Arduino编程实例-BMP280气压传感器驱动
  20. day06 代码实现邮件自动发送

热门文章

  1. LeetCode 977. 有序数组的平方
  2. php获取周几,php怎么获得星期几
  3. flutter 图解_【Flutter 专题】83 图解自定义 ACEWave 波浪 Widget (一)
  4. ubuntu定时执行python脚本方法及实例代码
  5. 2.Redis数据操作
  6. json-ajax-jsonp-cookie
  7. Jupyter Notebook安装 nbextensions 插件
  8. linux系统限制内存使用率,linux中限制CPU和内存占用率方法
  9. 【美团语音交互部】 NLP/知识图谱/语音识别等算法职位开放招聘!
  10. Android单元测试研究与实践