c# - Stackexchange Redis 哨兵客户端

标签 c# caching redis stackexchange.redis redis-sentinel

我正在使用 Redis 分布式缓存,故障转移模式与散列数据分布相结合。我的配置是:

          Sentinel1                   Sentinel4
Master1                     Master2
          Sentinel2                   Sentinel5
Slave1                      Slave2
          Sentinel3                   Sentinel6

在我的代码中,我需要使用哨兵访问主缓存。

我要指出哪一个?

我想我必须在 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;

建立连接后,我需要使用标准的 Redis 方法(如 SetString 和 getString...)访问缓存数据库,所以

db = conn.getDatabase();
db.getString(key);
db.setString(key, value);

此时我收到一条错误消息,指出“此操作已在命令映射中禁用,无法使用:SETEX”或 GET。

我想应该有一种方法可以询问哨兵与当前主机的连接,但我找不到很多有用的代码示例。 谁能帮帮我?

最佳答案

情况发生了变化,今天在 redis 连接字符串或配置中指定哨兵端点和服务名称就足够了。所有其余部分已封装为 this 的一部分。提交。

var conn = ConnectionMultiplexer.Connect("sentinel:26379,serviceName=mymaster");
var db = conn.GetDatabase();
db.StringSet("key", "value");

关于c# - Stackexchange Redis 哨兵客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677528/

相关文章:

c# - 来自同一 httpclient 实例中具有不同 url 的不同线程的两个请求

Swift:从 Internet 下载图像并缓存它们无法正常工作。需要建议

caching - 在缓存中存储对象集合的方法或策略

sql-server - 具有 Pub/Sub OnChange 的持久性 DataCache

javascript - 使用 NODE JS 和 BLUEBIRD 从 REDIS 中获取数据

c# - NHibernate 将类属性映射到行而不是列

c# - 旋转 3D 坐标

c# - MvvmCross:在 ViewModel 中引发事件的最佳方式?

node.js - 启动剑圣时出错

java - 响应式(Reactive) Redis 主题中发布的消息不会发送到客户端