【转】使用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/article/details/79928228

1、最简单的配置

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

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

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

通过字符串进行配置:

 

 
  1. string configString = GetRedisConfiguration();

  2. var options = ConfigurationOptions.Parse(configString);

  3. options.ClientName = GetAppName(); // only known at runtime

  4. options.AllowAdmin = true;

  5. conn = ConnectionMultiplexer.Connect(options);

配置选项

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

一些更常用的选项包括:

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

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

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

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

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

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

2、自动配置和手动配置

 

 
  1. ConfigurationOptions config = new ConfigurationOptions

  2. {

  3. EndPoints =

  4. {

  5. { "redis0", 6379 },

  6. { "redis1", 6380 }

  7. },

  8. CommandMap = CommandMap.Create(new HashSet<string>

  9. { // EXCLUDE a few commands

  10. "INFO", "CONFIG", "CLUSTER",

  11. "PING", "ECHO", "CLIENT"

  12. }, available: false),

  13. KeepAlive = 180,

  14. DefaultVersion = new Version(2, 8, 8),

  15. Password = "changeme"

  16. };

代码:

 
  1. ConfigurationOptions config = new ConfigurationOptions

  2. {

  3. EndPoints =

  4. {

  5. {"127.0.0.1",7000 },

  6. {"127.0.0.1",7001 },

  7. {"127.0.0.1",7002 },

  8. {"127.0.0.1",7003 },

  9. {"127.0.0.1",7004 },

  10. {"127.0.0.1",7005 }

  11. },

  12. KeepAlive = 180,

  13. DefaultVersion = new Version(1, 1, 1)

  14. };

  15. ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(config);

  16. //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");

  17. var db=redis.GetDatabase();

  18. var v1=db.StringGet("k1");

  19. db.StringSet("ks", "vs");

  20. var ks=db.StringGet("ks");

  21.  
  22.  
  23. Console.WriteLine(ks);

  24. Console.WriteLine(v1);

3、重命名命令

 

 
  1. var commands = new Dictionary<string,string> {

  2. { "info", null }, // disabled

  3. { "select", "use" }, // renamed to SQL equivalent for some reason

  4. };

  5. var options = new ConfigurationOptions {

  6. CommandMap = CommandMap.Create(commands),

  7. }

4.Twemproxy

 

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

 
  1. var options = new ConfigurationOptions

  2. {

  3. EndPoints = { "my-server" },

  4. Proxy = Proxy.Twemproxy

  5. };

5.重新连接重试策略

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

 

 
  1. config.ReconnectRetryPolicy = new ExponentialRetry(5000); // defaults maxDeltaBackoff to 10000 ms

  2. //retry# retry to re-connect after time in milliseconds

  3. //1 a random value between 5000 and 5500

  4. //2 a random value between 5000 and 6050

  5. //3 a random value between 5000 and 6655

  6. //4 a random value between 5000 and 8053

  7. //5 a random value between 5000 and 10000, since maxDeltaBackoff was 10000 ms

  8. //6 a random value between 5000 and 10000

  9.  
  10. config.ReconnectRetryPolicy = new LinearRetry(5000);

  11. //retry# retry to re-connect after time in milliseconds

  12. //1 5000

  13. //2 5000

  14. //3 5000

  15. //4 5000

  16. //5 5000

  17. //6 5000

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值