介绍

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");// 或者如果最后一个参数不是函数,则使用Promiseredis.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:6379new Redis(6380); // 127.0.0.1:6380new Redis(6379, "192.168.1.1"); // 192.168.1.1:6379new 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!

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

  1. 几款开源的图形化Redis客户端管理软件推荐

    几款开源的图形化Redis客户端管理软件推荐 摘要: Redis是一个超精简的基于内存的键值对数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库.不过它公 ...

  2. linux redis客户端_10个 Linux 顶级开源缓存工具

    可靠的分布式计算系统和应用程序已成为杰出业务的基石,尤其是在自动化和管理关键任务业务流程以及向客户提供服务方面.作为这些系统和应用程序的开发人员和系统管理员,您应该提供各种信息技术(IT)解决方案,以 ...

  3. redis数据同步至另一个redis

    在互联网时代,实际的开发过程中,经常会遇到各种各样的数据同步问题.或者是数据传输问题.账号我们的服务现在要在客户现场本地化部署一套那原有的redis里的数据就需要同步过去.在github上找了下果然有 ...

  4. linux go redis,godis: go实现的一个redis项目, 很好还有博客,非常值得学习

    Godis 是一个用 Go 语言实现的 Redis 服务器.本项目旨在为尝试使用 Go 语言开发高并发中间件的朋友提供一些参考. 请注意:不要在生产环境使用使用此项目 Godis 实现了 Redis ...

  5. 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端

    目录 背景 介绍 Redis协议 软件设计 下载最新的存储库存档 本文是关于为Redis服务器创建异步客户端的系列文章中的第一篇,该客户端低分配,因此GC压力小,数据复制最少.这是使用技术完成的,这些 ...

  6. redis的nodejs客户端ioredis初识

    转载请注明出处哈:http://carlosfu.iteye.com/blog/2240426  声明: 我是java程序员,对node不是很熟悉,只是写书的需要,要了解一下redis的node客户端 ...

  7. CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)

    文章目录 Redis简介 什么是redis redis的优点 Redis集群都有哪些模式 主从复制(Master-Slave Replication) 哨兵模式(Sentinel) Redis官方 C ...

  8. 1.Redis客户端

    Redis客户端是一个程序,通过网络连接到Redis服务器,从而实现跟 Redis服务器的交互. Redis客户端发送命令,同时显示Redis服务器的处理结果. redis-cli(Redis Com ...

  9. win10安装redis及redis客户端使用方法

    Redis下载地址 目录结构: readme.md是我自己添加的文件,不属于下载内容. 双击目录下的redis-server.exe启动服务,窗口若关闭,则服务关闭. 也可以使用cmd进到redis目 ...

最新文章

  1. geohash java github_GitHub - GongDexing/Geohash: GeoHash是目前比较主流实现位置服务的技术,用最简洁的Java实现GeoHash算法...
  2. PHP验证邮箱地址代码
  3. UIScrollview 技巧
  4. (三)Qt语言国际化
  5. gettimeofday函数使用《代码》
  6. 解决在极光推送的时候会出现一个 JPush提示:缺少统计代码
  7. html5 figure 标签
  8. 非参数统计——第二章 单样本问题
  9. WPF使用 Gmap.NET 绘制极坐标运动轨迹
  10. 永远的Shawn,永远于我们同行
  11. android studio超级玛丽源码,VR版NES模拟器来了,超级玛丽、魂斗罗都支持
  12. Gluster FS 部署复制卷与常用命令 常见问题解决
  13. linux图片拼接,如何在Linux上使用Hugin Panorama Creator将照片拼接成全景照片
  14. 【爆品】馥兰朵想买找谁?代理能月入过万吗?
  15. PLC通讯实现-C#实现西门子PLC MPI通讯W95_S7(五)
  16. pyCUDA教程-系列学习(1):GPU结构、pyCUDA、numbapro安装及HelloGPU例子
  17. 前端基础——css进阶(三)
  18. 京东2015校园招聘技术类笔试题及答案
  19. TexturePacker命令行拉起参数
  20. A*寻路中第四种烘培寻路方法Recast Mesh方法:

热门文章

  1. html ready 调用函数,Chrome和JQuery问题 - $(document).ready(function(){});在页面加载之前调用...
  2. php接收post写入文件,PHP中Post和Get获取数据写入文件中
  3. java正式测试数据隔离,开发环境要不要和测试环境隔离?
  4. Linux中安装oracle
  5. 安卓获取手机路径方法
  6. anconda设置镜像源_管理2000+Docker镜像,Kolla是如何做到的
  7. Jsp+Servlet+Mysql实现的在线图书商城源码
  8. 如何破解linux用户帐号密码二
  9. js的简单介绍及基本用法
  10. java中的容器问题