javascript - 如何创建与Master和Slave的Redis连接

标签 javascript node.js redis ioredis

我正在尝试建立一个 Redis 连接,我有一个“主”端口和两个从端口。我想用哨兵来做这件事。

我实际连接 redis 的代码实际上已被弃用,我认为是这样。

这是我的代码。

var redis = require('redis');
var client = redis.createClient(config.redis_port, config.redis_host,
{no_ready_check: true});

if (config.redis_password != null) {
  client.auth(config.redis_password, function (err) {
    if (err) throw err;
  });
}

client.on('connect', function(err, res) {
  logger.info('Connected to Redis ' + process.pid);
  redisIsReady = true;
});

client.on('error', function(err) {
  logger.error('Error connecting to Redis ' + process.pid);
  redisIsReady = false;
});

client.get(objectRequest.customerId, function(err, reply) {
    if (reply != null && reply >= config.max_requests) {
      var json = JSON.stringify({errorCode: validationErrors.TOO_MANY_REQUEST,
        description: errorMessage[validationErrors.TOO_MANY_REQUEST]});
      res.setHeader('Retry-After', config.retry_after);
      res.setHeader('Content-Type', 'application/json');
      res.setHeader('Content-Length', json.length);
      res.writeHead(429);
      res.write(json);
      return res.end();
    }
    // Set a value with an expiration
    client.incr(objectRequest.customerId);
    client.expire(objectRequest.customerId, config.retry_after);
});

我正在阅读其他帖子,我认为使用 ioredis 可能会很酷。但是我对Redis不是很了解...

我想连接到 redis,如果主服务器宕机,它会自动连接到从服务器。

我希望你能帮助我,

罗斯。

最佳答案

我终于完成了,效果很好。

我会把我的代码放在这里,希望这对其他人有帮助!

var Redis = require('ioredis');
// preferredSlaves array format
var preferredSlaves = [
  { ip: config.redis_slave_1, port: config.redis_port, prio: 1 },
  { ip: config.redis_slave_2, port: config.redis_port, prio: 2 }
];
var redis = new Redis({
  port: config.redis_port,
  host: config.redis_host,
  sentinels: [{ host: config.redis_sentinel_1, port: config.redis_sentinel }, { host: config.redis_sentinel_2, port: config.redis_sentinel }, { host: config.redis_sentinel_3, port: config.redis_sentinel }],
  name: config.redis_master_name,
  password: config.redis_password,
  preferredSlaves: preferredSlaves
});

redis.on('connect', function(err, res) {
  logger.info('Connected to Redis ' + process.pid);
  redisIsReady = true;
  console.log('Connected to Redis ' + process.pid + " REDIS " + JSON.stringify(redis.options) )
});

redis.on('error', function(err) {
  logger.error('Error connecting to Redis ' + process.pid);
  redisIsReady = false;
  console.log('error to Redis ' + err)
});

感谢您的所有回复,

问候!!

关于javascript - 如何创建与Master和Slave的Redis连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44431036/

相关文章:

javascript - 页面滚动时平滑自然的运动

javascript - 如何避免在 Immutable.js 中将不需要的键从数字转换为字符串

javascript - jQuery:无法自动隐藏元素

node.js - 时间/包 : Cannot find module 'config'

java - jedispool getResource 消耗太多延迟

go - 是否可以通过 GKE 上的多个微服务共享单个 Redis 服务器?

javascript - z-index 不能在侧边导航上工作

node.js - 在 lodash 中合并多个数组

javascript - 如何使用 ES6 和 Node Js 删除 txt 文件中的重复项?

concurrency - 当我并发运行 zadd 时,如何限制排序集的最大长度?