我使用的是Redis分布式缓存,它将故障转移模式与散列数据分发相结合。我的配置是:
Sentinel1 Sentinel4
Master1 Master2
Sentinel2 Sentinel5
Slave1 Slave2
Sentinel3 Sentinel6在我的代码中,我需要使用sentinel访问主缓存。
我该指出哪一个呢?
我想我必须在ConnectionMultiplexer的配置中注册所有的定点端点。
我可以使用以下代码将我的客户端连接到sentinel:
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;一旦获得连接,我就需要使用SetString和getString等标准redis方法访问缓存数据库……所以
db = conn.getDatabase();
db.getString(key);
db.setString(key, value);此时,我收到一个错误,指出“此操作已在命令映射中禁用,无法使用: SETEX”或GET。
我想应该有一种方法来询问前哨与当前主控的连接,但我没有找到很多有用的代码示例。有谁能帮帮我吗?
发布于 2020-10-02 04:17:46
事情发生了变化,现在在redis连接字符串或配置中指定一个前哨端点和serviceName就足够了。其余的都封装为this提交的一部分。
var conn = ConnectionMultiplexer.Connect("sentinel:26379,serviceName=mymaster");
var db = conn.GetDatabase();
db.StringSet("key", "value");https://stackoverflow.com/questions/46677528
复制相似问题