当前位置: 首页 > news >正文

StackExchange.Redis使用配置

转自:http://www.cnblogs.com/deosky/p/4848403.html

Configuration
redis有很多不同的方法来配置连接字符串 , StackExchange.Redis 提供了一个丰富的配置模型,当调用Connect 或者 ConnectAsync 时需要传入。

var conn = ConnectionMultiplexer.Connect(configuration);

这里的 configuration 参数可以是:
1. 一个 ConfigurationOptions 实例
2. 一个字符串

第二种方式从根本上来说也是ConfigurationOptions。


通过字符串配置连接

最简单的配置方式只需要一个主机名

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

它将会连接到本地的redis服务器 , 默认6379端口 ,多个连接通过逗号分割 。 其他选项在名称的后面包含了一个 “= ”。 例如
var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");

可以将一个字符串转换为ConfigurationOptions 或者 将一个ConfigurationOptions转换为字符串 。
ConfigurationOptions options = ConfigurationOptions.Parse(configString);
OR
string configString = options.ToString();

推荐的用法是将基础信息保存在一个字符串中,然后在运行是通过ConfigurationOptions改变其他信息。
string configString = GetRedisConfiguration();
var options = ConfigurationOptions.Parse(configString);
options.ClientName = GetAppName(); // only known at runtime
options.AllowAdmin = true;
conn = ConnectionMultiplexer.Connect(options);

也可以指定密码
var conn = ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=...");

 

配置选项
ConfigurationOptions 包含大量的配置选项,一些常用的配置如下:

abortConnect : 当为true时,当没有可用的服务器时则不会创建一个连接
allowAdmin : 当为true时 ,可以使用一些被认为危险的命令
channelPrefix:所有pub/sub渠道的前缀
connectRetry :重试连接的次数
connectTimeout:超时时间
configChannel: Broadcast channel name for communicating configuration changes
defaultDatabase : 默认0到-1
keepAlive : 保存x秒的活动连接
name:ClientName
password:password
proxy:代理 比如 twemproxy
resolveDns : 指定dns解析
serviceName : Not currently implemented (intended for use with sentinel)
ssl={bool} : 使用sll加密
sslHost={string} : 强制服务器使用特定的ssl标识
syncTimeout={int} : 异步超时时间
tiebreaker={string}:Key to use for selecting a server in an ambiguous master scenario
version={string} : Redis version level (useful when the server does not make this available)
writeBuffer={int} : 输出缓存区的大小

各配置项用逗号分割


自动和手动配置
在大部分的情况下StackExchange.Redis 会自动的帮我们配置很多选项。 比如 服务器类型,版本, 超时时间 , 主从服务器等..
尽管如此,有时候我们需要在服务器上面排除一些命令, 这种情况下有必要提供更多信息
ConfigurationOptions config = new ConfigurationOptions
{
EndPoints =
{
{ "redis0", 6379 },
{ "redis1", 6380 }
},
CommandMap = CommandMap.Create(new HashSet<string>
{ // EXCLUDE a few commands
"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=

重命名命令
你可以禁用或者重命名一个命令。 按照前面的示例这是通过 CommandMap 来完成的,不过上面使用Create( new HashSet<string> )来进行配置,我们使用Dictionary<string,string>。设置null时代表禁用该命令


var commands = new Dictionary<string,string> {
{ "info", null }, // disabled
{ "select", "use" }, // renamed to SQL equivalent for some reason
};
var options = new ConfigurationOptions {
// ...
CommandMap = CommandMap.Create(commands),
// ...
}

也可以使用下面的字符串来设置:

$INFO=,$SELECT=use

相关文章:

  • CentOS经常使用文件操作命令[百度博客搬家]
  • telegraf+influxdb+grafana开源监控架构
  • Linux日常运维--5
  • 倒序切片
  • Codeforces D - The Child and Zoo
  • struct net_device网络设备结构体详解
  • Python操作MySQL数据库的三种方法
  • 如何下载腾讯视频的视频转为MP4常用格式视频
  • FreeBSD-musb_otg文件详解
  • centos7 安装wps 后 演示无法启动
  • NSString属性什么时候用copy,什么时候用strong?
  • 使用Visual Studio Code对Node.js进行断点调试
  • CentOS7.2升级openSSH为7.5P1无法登录的处理过程
  • linux复盘:mysql双主与mysql-proxy实现读写分离
  • 10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通
  • [ JavaScript ] 数据结构与算法 —— 链表
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ECMAScript入门(七)--Module语法
  • Elasticsearch 参考指南(升级前重新索引)
  • Java教程_软件开发基础
  • MySQL QA
  • Promise初体验
  • python3 使用 asyncio 代替线程
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • scrapy学习之路4(itemloder的使用)
  • vue-loader 源码解析系列之 selector
  • WePY 在小程序性能调优上做出的探究
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于for循环的简单归纳
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 1.Ext JS 建立web开发工程
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • "无招胜有招"nbsp;史上最全的互…
  • (07)Hive——窗口函数详解
  • (2)nginx 安装、启停
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net 8 发布了,试下微软最近强推的MAUI
  • .Net Web项目创建比较不错的参考文章
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET的数据绑定
  • .Net小白的大学四年,内含面经
  • ;号自动换行
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @SuppressWarnings(unchecked)代码的作用