NodeJS操作Redis-Sentinel

NodeJS 访问 Redis-Sentinel

  • 使用 Redis-Sentinel 之后,由于主节点可能会发生变化,所以我们不能直接操作主节点
  • 只有 Redis-Sentinel 最清楚当前的主节点是谁, 所以我们应该通过 Redis-Sentinel 来操作主节点

官方地址:https://www.npmjs.com/package/redis-sentinel

要想通过 NodeJS 操作 Redis 主从的 Redis-Sentinel 只要通过操作 Redis-Sentinel 即可,因为 Redis 的主从是可能发生变化的,当主宕机之后Redis-Sentinel是会进行选举操作,所以如果你直接通过NodeJS操作主节点是不合适的,到时候它可能也不知道主节点是那个几点,Redis-Sentinel 是自动去选举主节点,说了这么多主要就是通过NodeJS操作Redis-Sentinel通过Redis-Sentinel去发送命令即可Redis-Sentinel会自动选举主节点,操作Redis-Sentinel主要由以下几步即可:

  1. 安装 redis-sentinel
  2. 导入 redis-sentinel
  3. 告诉 redis-sentinel 有哪些 sentinel 节点
  4. 填写一些额外的配置
  5. 告诉redis-sentinel主节点的名称是什么
  6. 连接redis-sentinel
  7. 通过redis-sentinel的连接对象操作Redis

如上步骤的实现:

  • 安装 redis-sentinel
npm install redis-sentinel
  • 导入 redis-sentinel
const sentinel = require('redis-sentinel');
  • 告诉 redis-sentinel 有哪些 sentinel 节点
const endpoints = [
    {host: '127.0.0.1', port: 26380},
    {host: '127.0.0.1', port: 26381},
    {host: '127.0.0.1', port: 26382},
];
  • 填写一些额外的配置(博主这里的sentinel节点没有设置任何的密码这里就不需要设置任何内容如果你设置了就需要配置一下了)
const opts = {};
  • 告诉redis-sentinel主节点的名称是什么
const masterName = 'mymaster';

image-20211225101555430

  • 连接redis-sentinel
const redisClient = sentinel.createClient(endpoints, masterName, opts);
  • 通过redis-sentinel的连接对象操作Redis
redisClient.set('gender', 'man');
redisClient.get('gender', (err, val) => {
    console.log(val);
});

最终代码:

// 1.导入redis-sentinel
const sentinel = require('redis-sentinel');

// 2.告诉redis-sentinel有哪些sentinel节点
const endpoints = [
    {host: '127.0.0.1', port: 26380},
    {host: '127.0.0.1', port: 26381},
    {host: '127.0.0.1', port: 26382},
];
// 3.填写一些额外的配置
// Standard node_redis client options
const opts = {};
// 4.告诉redis-sentinel主节点的名称是什么
const masterName = 'mymaster';

// 5.连接redis-sentinel
const redisClient = sentinel.createClient(endpoints, masterName, opts);

// 6.通过redis-sentinel的连接对象操作Redis
redisClient.set('gender', 'man');
redisClient.get('gender', (err, val) => {
    console.log(val);
});

image-20211225101653853

然后我们目前的架构样式如下图所示:

image-20211225103415937

posted @   BNTang  阅读(377)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示