StackExchange.Redis 系列 2:配置

  • 本系列博文是“伪”官方文档翻译,并非完全将官方文档进行翻译,而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。

  • 原始文档见此:https://stackexchange.github.io/StackExchange.Redis/

  • 本系列本博文基于 redis 5.0.6,系列中部分博文跟官方文档有出入,有不同见解 / 说明不当的地方,还请大家不吝拍砖。

配置概述

StackExchange.Redis 提供了丰富的配置,你可以在调用 Connect / ConnectAsync 方法的时候进行设定,如下

1
var conn = ConnectionMultiplexer.Connect(configuration);
  • configuration 可以是一个 ConfigurationOptions “实例”或者一个 “代表配置内容的string 字符串”

StackExchange.Redis 系列 1:基础使用

  • 本系列博文是“伪”官方文档翻译,并非完全将官方文档进行翻译,而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。

  • 原始文档见此:https://stackexchange.github.io/StackExchange.Redis/

  • 本系列本博文基于 redis 5.0.6,系列中部分博文跟官方文档有出入,有不同见解 / 说明不当的地方,还请大家不吝拍砖。

ConnectionMultiplexer 说明

命名空间位于:StackExchange.Redis.ConnectionMultiplexer

  • ConnectionMultiplexer 是 StackExchange.Redis 的核心对象,内部继承了 IDisposable,但建议不要用 using 以便可以愉快重用,你就认为它足够安全吧。

  • 该对象线程安全,且应该被重用,搞成单例即可,不要每次操作都创建一个。

主从库示例:

1
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");

通过设置注册表提高 P2P/IIS 并发数

写在前面

  • 在执行性能测试(如用 JMeter 直接压接口)的时候,有的时候并发数上不去、本机大面积出现 TCP 状态为 TIME_WAIT,除了放开 TCP 端口数和调整默认 TCP 释放时间外,另外几个注册表项同样重要且需要调整。
  • 以下设置项针对的是本机和远端机。
  • 设置完成后,重启下电脑使生效。

结合“性能监视器” 排查、处理性能瓶颈导致应用吞吐率等指标上不去的问题

双11备战前夕,总绕不过性能压测环节,TPS 一直上不去 / 不达标,除了代码上的问题外,服务器环境、配置、网络、磁盘、CPU 亦是导致性能瓶颈的重要一环,本文旨在分享最近项目性能压测过程中的排查经验,文中的表单你可以作为排查手册保存,如有不对之处,还请在评论区分享、交流你的经验和观点:)

通过本文,你可以了解和掌握:

  • 了解常见的系统瓶颈的可能原因。

  • 通过性能探查器定位性能瓶颈。

  • 几点关于性能优化的策略。

  • 一份关于 windows 性能监视器的部分计数器翻译及对应的经验结论。

使用 .net core 自定义项目模板

场景:日常工作中,你可能会碰到需要新建一个全新的解决方案的情况(如公司新起了一个新项目,需要有全新配套的后台程序),如果公司内部基础框架较多、解决方案需要DDD模式等,那么从新起项目到各种依赖引用到能实际可用,一大堆的配置都需要重新设定、测试,耗时耗力,根据项目的大小,往往可能需要 1-2 小时甚至更久。

在 .net core 之前,虽然有相关的解决方法可以实现“项目模板”这个需求,但在具体操作时很不方便,从 .net core 1.0 开始,提供了“模板引擎”,增加了 dotnet new --install(-i) 命令和选项,通过该命令,可以让你方便的创建属于你自己的项目模板。

通过本文你可以了解和掌握:

  1. 掌握如何将一个现有解决方案中的项目作为项目模板。

    1. 掌握如何在本地创建项目模板并安装和使用。
    2. 掌握如何将本地模板打包成 nuget 包,并通过包 id 进行安装使用该模板。
  2. 了解、掌握简单的 dotnet 和 nuget 命令及其配置。(windows 和 mac 会做差异说明)

准备工作

本次项目结构如下(DDD):

在 CentOS 搭建 ngrok server,进行内网穿透

在日常开发环境中,可能会碰到需要内网穿透的一些需求,如微信小程序的开发,为了便于开发调试,需要将内网机器对外暴露,较便捷的方式有(难易度由上往下依次繁琐):

  • 使用 ngrok 等类似客户端,通过别人架设的服务器进行内网穿透,较为灵活,可自建服务器。
  • 注册一个花生壳,使用其推出的内网穿透服务,有的时候会抽风,且 ssl 域名存在不够用的情况需增购。
  • 在外网架一个 nginx,通过在路由器设置 NAT 后,转发到内网机器上,灵活度较高,但需拥有路口路由器配置权限。

本文主要讲解如何使用 ngrok 自建一个内网穿透服务器,通过本文,你可以掌握:

  1. 在 centos 等其他 linux 衍生版本上搭建一个 ngrok server。

  2. 通过 openssl 生成证书。

  3. 在 windows,linux,arm 系统上使用生成 ngrok 客户端进行内网穿透。

1. 准备工作

通过 nginx 实现内网穿透

小程序开发的时候, https 是绕不过的一道环节,除了微信提供的 ssl 服务器架设方案,还有花生壳内网穿透服务、自行在内网架设 DNS 服务器等进行解决。本文所要讲解的,是通过外网 nginx 服务器反向代理来实现内网穿透。

前置条件:

1.路由器需支持端口转发。

2.需有公网 IP ,固定不固定无所谓。

3.在公有云上架设 nginx (本文使用阿里云 ECS 通过 linux 搭建 nginx),通过反向代理实现内网穿透。

在路由器上设置端口转发

如何在.NET CORE 下开发 "windows 服务"

在.NET Core中并没有像 .NET Framework下的 "windows服务"可创建,但我们依然可以通过powershell这个工具,将.NET CORE 下创建的项目以"windows服务"的形式来寄宿运行。

0.新建项目

新建、使用一个 web 应用程序 项目即可

本次示例所用 .NET CORE 版本为 2.1

项目结构如下:

将react编写的web项目发布到IIS站点中

本文主要讲解了下日常开发 -> 发布到服务器的一般流程,以及 react 项目部署到服务器后,刷新 404 问题的处理方法。

本篇博文基于:

  • react 16.8.4
  • IIS7

打包react项目

1
npm run build

优雅通过HttpClientFactory使用HttpClient

本文主要讲解如何优雅的在 .NET CORE 中使用 HttpClient ,对比了下 Framework 和 Core 中的 Http 客户端。

提供了几个封装 HttpClient 的思路和经验。

看完此文,基本可以自行封装一个客户端

HttpClient 日常使用及坑点:

在C#中,平时我们在使用 HttpClient 的时候,会将 HttpClient 包裹在 using 内部进行声明和初始化,如: