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

1、最简单的配置

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

在不指定端口号的情况下,默认6379端口;附加选项只是简单的附件(逗号分隔)。端口常用冒号(:)表示。例如

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

通过字符串进行配置:

string configString = GetRedisConfiguration();
var options = ConfigurationOptions.Parse(configString);
options.ClientName = GetAppName(); // only known at runtime
options.AllowAdmin = true;
conn = ConnectionMultiplexer.Connect(options);

配置选项

ConfigurationOptions对象具有许多的属性,所有这些都在智能提示中都有。

一些更常用的选项包括:

配置字符串 ConfigurationOptions 默认值 含义
abortConnect={bool} AbortOnConnectFail true (Azure 上默认值为 false) 如果为true,Connect没有服务器可用时将不会创建连接
allowAdmin={bool} AllowAdmin false 启用被认为具有风险的一系列命令
channelPrefix={string} ChannelPrefix null 所有发布/订阅操作的可选频道前缀
connectRetry={int} ConnectRetry 3 在初始 Connect期间重复连接尝试的次数
connectTimeout={int} ConnectTimeout 5000 连接操作的超时时间(ms)
configChannel={string} ConfigurationChannel __Booksleeve_MasterChanged 用于传达配置更改的广播通道名称
configCheckSeconds={int} ConfigCheckSeconds 60 检查配置的时间(秒)。如果支持的话,这会以交互式套接字的方式保持活动。
defaultDatabase={int} DefaultDatabase null 默认数据库索引, 从 0 到 databases - 1(0 到 Databases.Count -1)
keepAlive={int} KeepAlive -1 发送消息以帮助保持套接字活动的时间(秒)(默认时间60s)
name={string} ClientName null 标识 redis 中的连接
password={string} Password null redis 服务器的密码
proxy={proxy type} Proxy Proxy.None 正在使用的代理类型(如果有); 例如“twemproxy”
resolveDns={bool} ResolveDns false 指定DNS解析应该是显式和热切,而不是隐式
serviceName={string} ServiceName null 目前尚未实施(预期与sentinel一起使用)
ssl={bool} Ssl false 指定应使用SSL加密
sslHost={string} SslHost null 在服务器证书上强制执行特定的SSL主机标识
syncTimeout={int} SyncTimeout 1000 允许同步操作的时间(ms)
tiebreaker={string} TieBreaker __Booksleeve_TieBreak 用于在不明确的主场景中选择服务器的键
version={string} DefaultVersion (3.0 in Azure, else 2.0) Redis版本级别(当服务器要使用的版本默认不可用时使用)
writeBuffer={int} WriteBuffer 4096 输出缓冲区的大小
ReconnectRetryPolicy={IReconnectRetryPolicy} ReconnectRetryPolicy 重新连接重试策略

补充的只有代码才支持的选项:

ReconnectRetryPolicy (IReconnectRetryPolicy) - Default: ReconnectRetryPolicy = LinearRetry(ConnectTimeout);

  • 重连重试策略(IReconnectRetryPolicy)。默认设置:ReconnectRetryPolicy = LinearRetry(ConnectTimeout);

配置字符串中的令牌是逗号分隔的;任何没有=符号的都假定为redis服务器端点。 没有显式端口的端点将在未启用ssl的情况下使用6379,如果启用了ssl则使用6380。

$开头的令牌被用来表示命令映射,例如:$ config = cfg

2、自动配置和手动配置

ConfigurationOptions config = new ConfigurationOptions
{
    EndPoints =
    {
        { "redis0", 6379 },
        { "redis1", 6380 }
    },
    CommandMap = CommandMap.Create(new HashSet
    { // EXCLUDE a few commands
        "INFO", "CONFIG", "CLUSTER",
        "PING", "ECHO", "CLIENT"
    }, available: false),
    KeepAlive = 180,
    DefaultVersion = new Version(2, 8, 8),
    Password = "changeme"
};

代码:

 ConfigurationOptions config = new ConfigurationOptions
            {
                EndPoints =
                {
                    {"127.0.0.1",7000 },
                    {"127.0.0.1",7001 },
                    {"127.0.0.1",7002 },
                    {"127.0.0.1",7003 },
                    {"127.0.0.1",7004 },
                    {"127.0.0.1",7005 }
                },
                KeepAlive = 180,
                DefaultVersion = new Version(1, 1, 1)
            };
            ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(config);
            //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:7005,127.0.0.1:7004,127.0.0.1:7003,127.0.0.1:7002,127.0.0.1:7001,127.0.0.1:7000");
            var db=redis.GetDatabase();
            var v1=db.StringGet("k1");
            db.StringSet("ks", "vs");
            var ks=db.StringGet("ks");


            Console.WriteLine(ks);
            Console.WriteLine(v1);

3、重命名命令

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

4.Twemproxy

Twemproxy 是允许使用多个 redis 实例就像它是一个单个服务器,具有内置分片和容错(很像 redis 集群,但单独实现)的工具。 Twemproxy可用的功能集减少。 为了避免手动配置,可以使用 Proxy 选项:

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

5.重新连接重试策略

 ReconnectRetryPolicy可以是线性的(默认),指数的或者是一个自定义的重试策略。

config.ReconnectRetryPolicy = new ExponentialRetry(5000); // defaults maxDeltaBackoff to 10000 ms
//retry#    retry to re-connect after time in milliseconds
//1            a random value between 5000 and 5500       
//2            a random value between 5000 and 6050       
//3            a random value between 5000 and 6655       
//4            a random value between 5000 and 8053
//5            a random value between 5000 and 10000, since maxDeltaBackoff was 10000 ms
//6            a random value between 5000 and 10000

config.ReconnectRetryPolicy = new LinearRetry(5000); 
//retry#    retry to re-connect after time in milliseconds
//1            5000 
//2            5000        
//3            5000        
//4            5000 
//5            5000 
//6            5000


你可能感兴趣的:(redis,for,windows)