gpt4 book ai didi

Redis哨兵中的C#操作

转载 作者:行者123 更新时间:2023-12-04 08:10:45 28 4
gpt4 key购买 nike

我已经为 HA redis 集群(2 个副本、1 个主节点、3 个哨兵)设置了本地 docker 环境。只有哨兵暴露端口(10021、10022、10023)。
我使用的是 stackexchange.redis C# 客户端 v.2.1.58,并尝试做一些基本的操作。
这是我的示例代码。

  ConfigurationOptions configuration = new ConfigurationOptions
{
/// sentinels
EndPoints =
{
{ "localhost", 10021 },
{ "localhost", 10022 },
{ "localhost", 10023 }
},
CommandMap = CommandMap.Sentinel,
ServiceName = "redismaster",
Ssl = false,
};

ConnectionMultiplexer connection = ConnectionMultiplexer.SentinelConnect(configuration, Console.Out);
IDatabase database = connection.GetDatabase();
尝试设置操作时
   database.StringSetAsync("key", "value");
我越来越

This operation has been disabled in the command-map and cannot be used: SET


我认为操作是针对哨兵节点完成的,但我不确定。
对此有帮助吗?
在这里 repo https://github.com/rms1234567890/redis-sentinel

最佳答案

由于 StackExchange Redis 的最新变化,这将不起作用,您需要使用服务名称直接与 Sentiels 连接,例如

 using(var connection2= ConnectionMultiplexer.Connect("localhost:10021,localhost:10022,localhost:10023,serviceName=redismaster,AllowAdmin=true"))
{
IDatabase database2 = connection.GetDatabase();
database2.StringSet("test-key", "value");
database.StringGet("test-key");
}
当您在本地机器上运行您的应用程序时,即使这也会失败,但如果您在与哨兵/Redis 相同的网络中的 docker 实例中运行它,这应该可以工作。简而言之,您还需要公开主 Redis 实例的端口,因为另一个从站也可以成为主站,因此您需要允许所有 Redis 实例(主站、从站和哨兵)的入站流量规则

关于Redis哨兵中的C#操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65978316/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com