Redis Sentinel连接后SET命令被禁用报错,Redis本体正常求助
解决Redis Sentinel连接时SET命令被禁用的报错
你遇到的报错是因为代码里设置了CommandMap = CommandMap.Sentinel,这个命令映射是专门给Sentinel节点本身设计的,只允许执行Sentinel相关的管理命令(比如SENTINEL get-master-addr-by-name),完全禁止了SET这类普通数据操作命令,所以执行StringSet时会报错。
解决方案
- 直接删除代码里的
CommandMap = CommandMap.Sentinel这一行,或者把它改成CommandMap = CommandMap.Default。 ConnectionMultiplexer.SentinelConnect方法会自动通过Sentinel集群找到对应的主节点,然后建立和主节点的连接,此时用默认的命令映射就能正常执行所有Redis数据操作命令。
修改后的代码示例
var options = new ConfigurationOptions { EndPoints = { "host1:26379", "host2:26379", "host3:26379" }, ServiceName = "mymaster", Password = "********" }; var connection = ConnectionMultiplexer.SentinelConnect(options); var db = connection.GetDatabase(); db.StringSet("mykey", "myvalue");
内容的提问来源于stack exchange,提问作者smka
相关产品推荐
相关产品推荐

