StackExchange.Redis官方文档(二)【配置】

使用 StackExchange.Redis 在 C# 中开始使用 Redis Redis(Remote Dictionary Server)是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与位图(bitmaps)、超日志(hyperloglogs)和地理空间(geospatial)索引半径查询等。 阅读详情

配置

配置Redis有很多不同的方式,StackExchange.Redis提供了一个丰富的配置模型,我们可在调用 Connect 或者 ConnectAsync 方法时传入配置:

var conn = ConnectionMultiplexer.Connect(configuration);

在这里参数configure可以是:

  • ConfigurationOptions 实例配置
  • 字符串方式配置

后面一种也是前面一种的标记形式。

基本配置 - 通过字符串配置

最简单的配置实例就是以主机名来配置:

var conn = ConnectionMultiplexer.Connect("localhost");

这会连接到本机上的单个服务器,默认使用Redis的缺省端口:6379。还有一些选项以逗号分隔的方式附加上去。端口通常用一个冒号(:)来表示。配置选项的名字后跟随了一个=号。如下所示:

var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");

我们可以自由的在 string 和 ConfigurationOptions 两者之间相互转换,如下所示:

ConfigurationOptions options = ConfigurationOptions.Parse(configString);

或者

string configString = options.ToString();

最常用的方式是将基本信息存储在一个字符串中,然后在运行时应用这个特定的基本信息:

string configString = GetRedisConfiguration();
var options = ConfigurationOptions.Parse(configString);
options.ClientName = GetAppName(); // 仅仅在运行时才知道
options.AllowAdmin = true;
conn = ConnectionMultiplexer.Connect(options);

在微软Azure上使用Redis并附上密码的例子:

var conn = ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=...");

配置选项

ConfigurationOptions 对象具有很多属性,所有选项的说明都已在智能提示里面。下面表格是一些最常用的选项描述:

Configuration stringConfigurationOptions描述
abortConnect={bool}AbortOnConnectFail如果是 true,当没有可用的服务器时 Connect 不会创建连接
allowAdmin={bool}AllowAdmin如果是 true,开启一些被认为是有风险的命令
channelPrefix={string}ChannelPrefix所有 pub/sub 操作的可选通道前缀
connectRetry={int}ConnectRetry在初始化 Connect 时,连接重试次数
connectTimeout={int}ConnectTimeout连接超时设置,时间单位是ms
configChannel={string}ConfigurationChannel设置广播通道名称
defaultDatabase={int}DefaultDatabase默认数据库索引, 从 0 到 databases - 1
keepAlive={int}KeepAlive如果在指定时间(seconds)内没有活动,那么发送一条信息来帮助socket保持连接
name={string}ClientName唯一名称,用来识别Redis里面的连接
password={string}PasswordRedis服务器密码
proxy={proxy type}Proxy使用的代理类型 (如果有的话); 例如 “twemproxy”
resolveDns={bool}ResolveDns指定DNS解析方式是显示而不是隐式
serviceName={string}ServiceName当前没有实现
ssl={bool}Ssl指定使用SSL加密
sslHost={string}SslHost强制SSL主机识别,需要使用服务器端证书
syncTimeout={int}SyncTimeout异步超时设置(ms)
tiebreaker={string}TieBreaker主要是在一个模糊不清的主机之间选择出一个作为主服务器
version={string}DefaultVersionRedis 版本级别 (该选项是非常有用的,当服务器不可用时)
writeBuffer={int}WriteBuffer输出缓存区的大小

在配置字符串中的标记都是以逗号分隔的;任何没有 = 符号的都被假定为Redis的服务终端。如果没有开启SSL,并且终端没有指定一个明确的端口,那么将使用6379作为端口;如果开启了SSL,那么6380将作为端口。以 ∗∗开始的标记会被当做命令来映射;例如:∗∗ config=cfg 。

自动配置与手动配置

在很多常见的情况下,StackExchange.Redis 将会自动的配置多个设置选项,包括服务器类型和版本,连接超时和主/从关系配置。可是有时候在Redis服务器这个命令是被禁止的。在这种情况下,提供更多的信息是非常有用的:

ConfigurationOptions config = new ConfigurationOptions
{
    EndPoints =
    {
        { "redis0", 6379 },
        { "redis1", 6380 }
    },
    CommandMap = CommandMap.Create(new HashSet<string>
    { // 排除几个命令
        "INFO", "CONFIG", "CLUSTER",
        "PING", "ECHO", "CLIENT"
    }, available: false),
    KeepAlive = 180,
    DefaultVersion = new Version(2, 8, 8),
    Password = "changeme"
};

上面的配置等同于下面的字符串配置:

redis0:6379,redis1:6380,keepAlive=180,version=2.8.8,$CLIENT=,$CLUSTER=,$CONFIG=,$ECHO=,$INFO=,$PING=

重命名命令

在Redis中有些不常用的功能,那就是你能禁用或者重命名单个命令。正如前面的所展示的,这是通过 CommandMap 来实现的,而不是通过 HashSet\

var commands = new Dictionary<string,string> {
        { "info", null }, // 禁用
        { "select", "use" }, // 由于某种原因重命名为等效的SQL
};
var options = new ConfigurationOptions {
    // ...
    CommandMap = CommandMap.Create(commands),
    // ...
}

上面的配置等同于下面的字符串配置(在连接字符串中):

$INFO=,$SELECT=use

Twemproxy

Twemproxy是一个允许多个Redis实例使用起来像是单个服务一样的工具,它内置分片和容错能力(这很像Redis集群,但是它是单独实现的)。Twemproxy简化了功能设置的可用性。为了避免手动配置,Proxy 选项可以这样配置:

var options = new ConfigurationOptions
{
    EndPoints = { "my-server" },
    Proxy = Proxy.Twemproxy
};

打破僵局(Tiebreakers或者权衡决策)和配置更改公告

通常StackExchange.Redis会自动的解决主/从节点问题。然而可能你没有使用像 Redis集群 或 Redis-Sentinel 那样的管理工具,你可能会碰到这样的一个场合:同时具有多个主节点(例如:当我们以维护为目的而重新设置一个节点时,它可能作为一个主节点重新出现在网络上)。为了解决这个问题,StackExchange.Redis可以用打破僵局(权衡决策)这一概念,这个仅适用于多个主机被发现的情况。为了兼容 BookSleeve,默认键名是 “__Booksleeve_TieBreak”(一直是在索引为0的数据库中)。这用来作为一个简单的投票机制,帮助决策那个是首选主节点,使之以正确路由工作。

同样的,当配置发生更改的时候(尤其是在主/从配置的时候),这对于连接实例来说将是非常重要的,这可以使它们自己意识到有新的情况发生(通过 IFNO,CONFIG 等等)。StackExchange.Redis通过自动订阅来 pub/sub 发送这样的通知。由于类似的原因,默认是键名是 “__Booksleeve_MasterChanged”。

这两个选项可以被自定义或者禁用(设置为”“),可以通过 .ConfigurationChannel 和 .TieBreaker 来配置属性。

这些设置也可以通过 IServer.MakeMaster() 来配置,可以在数据库中设置打破僵局(tie-breaker)和广播配置更改的消息。通过 ConnectionMultiplexer.PublishReconfigure 方法,配置消息也可以单独使用主/从更新来请求所有的节点刷新它们的配置。

C#客户端(StackExchange.Redis) 连接Redis 最近因为需要,为小白客户提供各种语言的Redis连接示例。其中包括了C#(StackExchange.Redis)。 废话不多说,以华为云分布式缓存服务(for Redis)为例,分享一下Redis的C#客户端连接配置过程。 1. 首先我在华为云上买了一个Redis缓存实例。同时也买了一台ECS服务器,选了Windows Server 2012。 2. 在ECS上安装VS 2017社区版,因... 阅读详情

相关推荐

C#中使用StackExchange.Redis操作Redis完整实战指南

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,广泛应用于缓存、消息队列和实时数据处理场景。其核心优势在于低延迟读写与丰富的数据类型支持。// 示例:使用StackExchange.Redis连接Redis并执行简单操作该特性使其成为高并发系统中不可或缺的一环。ASP.NET Core 健康检查集成示例:try// 注册该机制可在/health。

weixin_42327217的博客 1421

C#操作redis(StackExchange.Redis)

C#操作redis入门步骤:安装redis–安装可视化软件RedisDesktopManager–C#操作redis前两步软件的安装教程很多,这里不赘述。一、类库的选择在C#中使用Redis,一般有两种方式:1、ServiceStack.Redis,据说是Redis官方推荐使用的驱动类库,但是是收费的。2、StackExchange.Redis,可能性能要比ServiceStack.Redis差点,但是是免费的。

zhiqingcn的专栏 7306

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 980

StackExchange.Redis的基本使用

StackExchange.Redis是一款免费的操作Redis的客户端工具,我们使用这个库来简单的学习下Redis的一些基本操作 Redis默认安装好后的端口是6379 密码可以自己设置,使用命令修改 config get requirepass //获取当前密码 config set requirepass "yourpassword"//设置当前密码 代码里需引用StackExch...

飞翔的学习笔记 1万+

STM32—时钟树(结合系统时钟函数理解)

时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处。心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树。 STM32时钟: 在STM32...

肥宅快乐博客 1万+

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南

本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。

weixin_29229261的博客 1023

StackExchange.Redis(缓存)

一:string string将数据存入缓存 1.存单条数据入缓存 class Program { static void Main(string[] args) { var keyName = "stringTest"; var configInfo = "name,13598871354"; var aa = SaveRedis(keyName, configInfo);

qq_40186331的博客 3335

PCIe Base Specification解析(二)

PCIe事务层,Transaction Layer Specification

Crazzy_M的博客 1290

配置

配置Redis有很多不同的方式,StackExchange.Redis提供了一个丰富的配置模型,我们可在调用 Connect 或者 ConnectAsync 方法时传入配置: var conn = ConnectionMultiplexer.Connect(configuration); 在这里参数configure可以是: ConfigurationOptions 实例配置...

weixin_34235105的博客 376

Cadence PCB仿真使用Allegro PCB SI S参数配置方法图文教程

S参数即S-Parameter是指散射参数,描述信号在传输线中的正反向传输和正反向反射的情况。本文讲述在使用Allegro PCB SI进行信号完整性仿真前,S参数的配置方法。

fydar的博客 2177

STM32F103标准库开发:Keil5新建STM32工程

新建STM32工程 步骤一:创建工程模板文件 新建一个文件夹 template 在文件夹template里面新建五个文件 (1)CMSIS: 存放内核驱动程序和启动引导文件 (2)FWLIB:存放库函数文件 (3)Project:存放工程文件 (4)System:存放自己写的驱动程序 (5)User:存放用户程序(主函数) 步骤二:导入stm...

MQ0522的博客 2万+

StackExchange.Redis 官方文档(二) Configuration

StackExchange.Redis 官方文档(二) Configuration 原文:StackExchange.Redis 官方文档(二) Configuration配置 有多种方式可以配置redis,StackExchange.Redis提供了一个丰富的配置模型,在执行Connect (or ConnectAsync) 时被调用: ...

weixin_30530939的博客 867

基于YOLO的印章检测及文字识别

针对印章自动化检测与文字识别需求,提出了一种融合改进YOLO模型与OCR技术的端到端解决方案,旨在解决复杂背景干扰、印章残缺变形及环形文字排列等难题

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 8216

使用StackExchange.Redis操作Redis--配置

1、最简单的配置var conn = ConnectionMultiplexer.Connect("localhost");在不指定端口号的情况下,默认6379端口;附加选项只是简单的附件(逗号分隔)。端口常用冒号(:)表示。例如var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");通...

学习的路上,永不停止 1万+

YOLO11涨点优化:Loss魔改 | WIoU (Wise-IoU) v3版本全面替换,基于动态非单调聚焦机制,让模型更聪明地学习

YOLOv11目标检测中的WIoU v3损失函数改进 本文探讨了YOLOv11目标检测模型中CIoU损失函数的局限性,并提出了WIoU v3改进方案。关键发现包括: CIoU的缺陷:在低质量样本(小目标/遮挡目标)上过度惩罚,导致模型优化方向偏离,小目标AP往往比大目标低30%左右。 WIoU v3的创新: 动态非单调聚焦机制:根据样本"离群度"智能分配梯度 让模型重点优化中等质量样本,减少对低质量样本的无效关注 采用指数移动平均来自适应调整质量评判标准 实际效果:WIoU v3在保持大

2601_95807009的博客 421

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

.NetCore 使用StackExchange.Redis 连接Redis

StackExchange.Redis是一个.Net平台上使用较为广泛的一个Redis封装 1.安装Redis 前提是得先在本机上安装Redis,由于我是在window上,访问以下链接下载windows安装包 https://github.com/microsoftarchive/redis/releases 若是安装在linux中,则直接访问redis.io ,redis官网上...

Stay Hungry 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

StackExchange.Redis 官方文档

StackExchange.Redis 官方文档 原文:StackExchange.Redis 官方文档时隔多年的翻译终于完成了第六个,也是很重要的的官方文档,是介绍有关链接管理,管道流水线和多路复用的 官方地址在这里:官方文档 下面做个汇总: StackExchange.Redis 官方文档(一) Basics StackExchan...

weixin_30302609的博客 126

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【转】使用StackExchange.Redis操作Redis--配置

【转】https://blog.csdn.net/smj20170417/article/details/79928228 使用StackExchange.Redis操作Redis--配置 2018年04月13日 14:35:41 学习不止于前 阅读数:3277 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/smj20170417/arti...

new Girl的博客 1546

StackExchange.Redis的基本用法

基本用法 StackExchange.Redis中的中心对象是名称空间中的ConnectionMultiplexer类StackExchange.Redis。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer功能很多,因此可以在调用方之间共享和重用它。您不应该创建ConnectionMultiplexer每个操作。它是完全线程安全的,并且可以用于此用途。在所有后续示例中,将假定您已ConnectionMultiplexer保存一个实例以供重用。但是现在,让我们创建一个。这可以

https://github.com/conanl5566 6808

【redis学习总结】C# StackExchange Redis

链接: https://pan.baidu.com/s/1lZ0vGsQb4CHrPIdO26Q8pg 密码: fvnb文件在这里,有兴趣可以看看先一步一步封装吧。首先是ConfigurationHelperpublic static class ConfigurationHelper { internal static T Get&lt;T&gt;(string appS...

lancher2048的博客 3681

StackExchange.Redis 项目教程

StackExchange.Redis 是一个通用的 Redis 客户端,其项目目录结构如下: ``` StackExchange.Redis/ ├── devcontainer/ ├── docs/ ├── src/ ├── tests/ ├── toys/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── Build.csproj...

gitblog_00238的博客 423

c#使用 StackExchange.Redis 封装 RedisHelper

公司一直在用.net自带的缓存,大家都知道.net自带缓存的缺点,就不多说了,不知道的可以查一查,领导最近在说分布式缓存,我们选的是redis,领导让我不忙的时候封装一下,搜索了两天,选了选第三方的插件,ServiceStack.Redis和StackExchange.Redis以前都用过,不过都是别人封装好的,今天在往项目中整合的时候,我使用的ServiceStack.Redis版本不兼容.ne...

Qin066的博客 4276

uvloop 事件循环指南:如何接入 Runner 接口

CPU 不忙、请求吞吐却上不去时,瓶颈常常在 asyncio 事件循环本身。uvloop 是基于 Cython 与 libuv 实现的事件循环替身。Python 3.11 起,标准库引入 Runner 接口,3.12 又给 asyncio.run() 增加 loop_factory 参数,uvloop 0.18 在此基础上封装出 uvloop.run():一行代码接管循环的创建、运行与清理,业务代

gitblog_00550的博客 1047

StackExchange.Redis客户端读写主从配置,以及哨兵配置

本文简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置

dotNET跨平台 1487
上一篇: StackExchange.Redis官方文档(一)【基本用法】
下一篇: StackExchange.Redis官方文档(三)【管道和多路复用器】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值