百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

NodeJS下好用的Redis客户端ioredis,再推荐一个Redis可视化工具

mhr18 2024-11-23 19:09 25 浏览 0 评论

介绍

ioredis是一个适用于Nodejs的Redis全功能客户端,健壮性以及高性能是它的亮点,支持Redis> = 2.6.12和(Node.js> = 6),ioredis是一个功能强大的功能强大的Redis客户,已被阿里巴巴和许多其他了不起的公司所使用。







Github

https://github.com/luin/ioredis

特性

  • 功能齐全。它支持Cluster,Sentinel,Pipelining,当然还支持Lua脚本和Pub / Sub(具有二进制消息的支持)
  • 高性能
  • 易于使用的API。它与Node回调和本机Promise一起使用
  • 命令参数和回复的转换
  • 透明键前缀
  • Lua脚本的抽象,允许您定义自定义命令
  • 支持二进制数据
  • 支持TLS
  • 支持脱机队列和就绪检查
  • 支持ES6类型,例如Map和Set
  • 支持GEO命令(Redis 3.2不稳定)
  • 复杂的错误处理策略
  • 支持NAT映射
  • 安装

    npm install ioredis

    基本使用

    var Redis = require("ioredis");
    var redis = new Redis();
    
    redis.set("foo", "bar");
    redis.get("foo", function(err, result) {
     console.log(result);
    });
    redis.del("foo");
    
    // 或者如果最后一个参数不是函数,则使用Promise
    redis.get("foo").then(function(result) {
     console.log(result);
    });
    
    
    redis.sadd("set", 1, 3, 5, 7);
    redis.sadd("set", [1, 3, 5, 7]);
    
    // 所有参数都直接传递给redis服务器:
    redis.set("key", 100, "EX", 10);

    连接到Redis

    创建新的Redis实例后,将同时创建到Redis的连接。可以通过以下方式指定要连接的Redis:

    new Redis(); // Connect to 127.0.0.1:6379
    new Redis(6380); // 127.0.0.1:6380
    new Redis(6379, "192.168.1.1"); // 192.168.1.1:6379
    new Redis("/tmp/redis.sock");
    new Redis({
     port: 6379, // Redis port
     host: "127.0.0.1", // Redis host
     family: 4, // 4 (IPv4) or 6 (IPv6)
     password: "auth",
     db: 0
    });

    使用TLS加密时,还可以将连接选项指定为redis:// URL或rediss:// URL:

    new Redis("redis://:authpassword@127.0.0.1:6380/4");

    发布/订阅

    这是发布/订阅API的简单示例。以下程序将打开两个客户端连接。它订阅一个连接的频道,然后发布另一个连接:

    var Redis = require("ioredis");
    var redis = new Redis();
    var pub = new Redis();
    redis.subscribe("news", "music", function(err, count) {
     // 现在我们都订阅了“新闻”和“音乐”频道。
     // `count` 代表我们当前订阅的频道数。
    
     pub.publish("news", "Hello world!");
     pub.publish("music", "Hello again!");
    });
    
    redis.on("message", function(channel, message) {
     // 从新闻频道,收到消息Hello world!
     // 从音乐频道再次收到消息Hello!
     console.log("Receive message %s from channel %s", message, channel);
    });
    
    //还有一个称为“ messageBuffer”的事件,与“ message”相同,除了//返回缓冲区buffer而不是字符串。
    redis.on("messageBuffer", function(channel, message) {
     
    });

    还以类似方式支持PSUBSCRIBE:

    redis.psubscribe("pat?ern", function(err, count) {});
    redis.on("pmessage", function(pattern, channel, message) {});
    redis.on("pmessageBuffer", function(pattern, channel, message) {});

    当客户端发出SUBSCRIBE或PSUBSCRIBE时,该连接将进入“订阅者”模式。那时,只有修改订阅集的命令才有效。当订阅集为空时,连接将恢复为常规模式。如果需要在订阅者模式下向Redis发送常规命令,只需打开另一个连接即可。

    处理二进制数据

    redis.set("foo", Buffer.from("bar"));

    每个命令都有一个返回Buffer的方法(通过在命令名后添加“ Buffer”后缀)。获取缓冲区buffer:

    redis.getBuffer("foo", function(err, result) {
     // result is a buffer.
    });

    Pipelining

    如果要发送一批命令(例如> 5),则可以使用流水线将命令在内存中排队,然后将它们一次全部发送到Redis。这样,性能提高了50%?300%。redis.pipeline()创建一个Pipeline实例。您可以像Redis实例一样在其上调用任何Redis命令。这些命令在内存中排队,并通过调用exec方法刷新到Redis:

    var pipeline = redis.pipeline();
    pipeline.set("foo", "bar");
    pipeline.del("cc");
    pipeline.exec(function(err, results) {
     
    });
    
    
    redis
     .pipeline()
     .set("foo", "bar")
     .del("cc")
     .exec(function(err, results) {});
    
    
    var promise = redis
     .pipeline()
     .set("foo", "bar")
     .get("foo")
     .exec();
    promise.then(function(result) {
    });

    每个链接的命令还可以具有一个回调,该回调将在命令得到答复时被调用:

    redis
     .pipeline()
     .set("foo", "bar")
     .get("foo", function(err, result) {
     // result === 'bar'
     })
     .exec(function(err, result) {
     // result[1][1] === 'bar'
     });

    除了将命令分别添加到管道队列之外,还可以将命令和参数数组传递给构造函数:

    redis.pipeline([["set", "foo", "bar"], ["get", "foo"]]).exec(function() {
     /* ... */
    });

    length属性显示管道中有多少个命令:

    const length = redis
     .pipeline()
     .set("foo", "bar")
     .get("foo").length;
    // length === 2

    。。。。。。

    以上是借鉴Github上介绍的部分功能,如果需要详细了解它的所有功能,则可以直接参考Github上提供的文档API,非常详细,本文篇幅有限就不在此展示!

    https://github.com/luin/ioredis

    Redis可视化客户端

    之前的文章中介绍了很多Redis的可视化管理客户端,今天就在介绍一个跨平台的Redis GUI——Medis。Medis是一个漂亮的,易于使用的Redis管理应用程序,它基于Electron,React和Redux构建在现代网络上。它由许多很棒的Node.js模块提供支持,尤其是ioredis和ssh2。







    特性:

  • 按键查看/编辑
  • SSH隧道,用于连接远程服务器
  • 执行自定义命令的终端
  • 配置查看/编辑
  • 高级:

  • JSON / MessagePack格式查看/编辑和内置高亮显示/验证
  • 在不阻止Redis服务器的情况下使用数百万个键和键成员
  • 模式管理器,可轻松选择子键组。
  • https://github.com/luin/medis

    总结

    如果你正愁在Nodejs下没有找到一个好用的Redis客户端,那么ioredis则是你可以选择的一个选项,好不好用还得试试才知道,Enjoy it!

    相关推荐

    【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

    如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

    Pure Storage推出统一数据管理云平台及新闪存阵列

    PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

    对Java学习的10条建议(对java课程的建议)

    不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

    SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

    官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

    JDK21有没有什么稳定、简单又强势的特性?

    佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

    「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

    在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

    Java面试题及答案最全总结(2025版)

    大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

    数据库日常运维工作内容(数据库日常运维 工作内容)

    #数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

    分布式之系统底层原理(上)(底层分布式技术)

    作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

    oracle 死锁了怎么办?kill 进程 直接上干货

    1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

    SpringBoot 各种分页查询方式详解(全网最全)

    一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

    《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

    《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

    LoadRunner(loadrunner录制不到脚本)

    一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

    Redis数据类型介绍(redis 数据类型)

    介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

    RMAN备份监控及优化总结(rman备份原理)

    今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

    取消回复欢迎 发表评论: