zoukankan      html  css  js  c++  java
  • StackExchange.Redis 使用-配置 (四)

    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

  • 相关阅读:
    2015 年最受 Linux 爱好者欢迎的软硬件大盘点
    Java 9终于要包含Jigsaw项目了
    Linux 容器技术史话:从 chroot 到未来
    开发者最常用的 8 款 Sublime Text 3 插件
    60,000毫秒内对Linux的性能诊断效的方法
    bzoj 2595 [Wc2008]游览计划(斯坦纳树)
    bzoj 3997 [TJOI2015]组合数学(DP)
    bzoj 1014 [JSOI2008]火星人prefix(splay+hash)
    bzoj 1090 [SCOI2003]字符串折叠(区间DP)
    bzoj 1537 [POI2005]Aut- The Bus(DP+BIT)
  • 原文地址:https://www.cnblogs.com/deosky/p/4848403.html
Copyright © 2011-2022 走看看