我正在使用Redis分布式缓存,故障转移模式与散列数据分发合并。我的配置是:
Sentinel1 Sentinel4
Master1 Master2
Sentinel2 Sentinel5
Slave1 Slave2
Sentinel3 Sentinel6
在我的代码中,我需要使用sentinel访问主缓存。
我要指出哪一个?
我想我必须在ConnectionMultiplexer的配置中注册所有的哨兵点。
我可以使用以下代码将我的客户端连接到哨兵:
var options = new ConfigurationOptions()
{
CommandMap = CommandMap.Sentinel,
EndPoints = { { IP, Port } },
AllowAdmin = true,
TieBreaker = "",
ServiceName = ServiceName,
SyncTimeout = 5000,
AbortOnConnectFail = true,
Ssl = false
};
var connection = ConnectionMultiplexer.Connect(options, Console.Out);
return connection;
获得连接后,我需要使用标准的redis方法访问缓存数据库,如SetString和getString ......所以
db = conn.getDatabase();
db.getString(key);
db.setString(key, value);
此时我收到一条错误,指出“此操作已在命令映射中禁用,无法使用:SETEX”或GET。
我想应该有一种方法可以向哨兵询问与当前主人的连接,但我找不到很多有用的代码示例。 有人可以帮帮我吗?
答案 0 :(得分:1)
情况发生了变化,今天足以在redis连接字符串或“配置”中指定哨兵端点和serviceName。其余所有内容都已封装为this提交的一部分。
var conn = ConnectionMultiplexer.Connect("sentinel:26379,serviceName=mymaster");
var db = conn.GetDatabase();
db.StringSet("key", "value");
答案 1 :(得分:0)