nodejs cluster_NodeJS下好用的Redis客户端ioredis,再推荐一个Redis可视化工具
介绍
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可视化工具相关推荐
- 几款开源的图形化Redis客户端管理软件推荐
几款开源的图形化Redis客户端管理软件推荐 摘要: Redis是一个超精简的基于内存的键值对数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库.不过它公 ...
- linux redis客户端_10个 Linux 顶级开源缓存工具
可靠的分布式计算系统和应用程序已成为杰出业务的基石,尤其是在自动化和管理关键任务业务流程以及向客户提供服务方面.作为这些系统和应用程序的开发人员和系统管理员,您应该提供各种信息技术(IT)解决方案,以 ...
- redis数据同步至另一个redis
在互联网时代,实际的开发过程中,经常会遇到各种各样的数据同步问题.或者是数据传输问题.账号我们的服务现在要在客户现场本地化部署一套那原有的redis里的数据就需要同步过去.在github上找了下果然有 ...
- linux go redis,godis: go实现的一个redis项目, 很好还有博客,非常值得学习
Godis 是一个用 Go 语言实现的 Redis 服务器.本项目旨在为尝试使用 Go 语言开发高并发中间件的朋友提供一些参考. 请注意:不要在生产环境使用使用此项目 Godis 实现了 Redis ...
- 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端
目录 背景 介绍 Redis协议 软件设计 下载最新的存储库存档 本文是关于为Redis服务器创建异步客户端的系列文章中的第一篇,该客户端低分配,因此GC压力小,数据复制最少.这是使用技术完成的,这些 ...
- redis的nodejs客户端ioredis初识
转载请注明出处哈:http://carlosfu.iteye.com/blog/2240426 声明: 我是java程序员,对node不是很熟悉,只是写书的需要,要了解一下redis的node客户端 ...
- CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)
文章目录 Redis简介 什么是redis redis的优点 Redis集群都有哪些模式 主从复制(Master-Slave Replication) 哨兵模式(Sentinel) Redis官方 C ...
- 1.Redis客户端
Redis客户端是一个程序,通过网络连接到Redis服务器,从而实现跟 Redis服务器的交互. Redis客户端发送命令,同时显示Redis服务器的处理结果. redis-cli(Redis Com ...
- win10安装redis及redis客户端使用方法
Redis下载地址 目录结构: readme.md是我自己添加的文件,不属于下载内容. 双击目录下的redis-server.exe启动服务,窗口若关闭,则服务关闭. 也可以使用cmd进到redis目 ...
最新文章
- geohash java github_GitHub - GongDexing/Geohash: GeoHash是目前比较主流实现位置服务的技术,用最简洁的Java实现GeoHash算法...
- PHP验证邮箱地址代码
- UIScrollview 技巧
- (三)Qt语言国际化
- gettimeofday函数使用《代码》
- 解决在极光推送的时候会出现一个 JPush提示:缺少统计代码
- html5 figure 标签
- 非参数统计——第二章 单样本问题
- WPF使用 Gmap.NET 绘制极坐标运动轨迹
- 永远的Shawn,永远于我们同行
- android studio超级玛丽源码,VR版NES模拟器来了,超级玛丽、魂斗罗都支持
- Gluster FS 部署复制卷与常用命令 常见问题解决
- linux图片拼接,如何在Linux上使用Hugin Panorama Creator将照片拼接成全景照片
- 【爆品】馥兰朵想买找谁?代理能月入过万吗?
- PLC通讯实现-C#实现西门子PLC MPI通讯W95_S7(五)
- pyCUDA教程-系列学习(1):GPU结构、pyCUDA、numbapro安装及HelloGPU例子
- 前端基础——css进阶(三)
- 京东2015校园招聘技术类笔试题及答案
- TexturePacker命令行拉起参数
- A*寻路中第四种烘培寻路方法Recast Mesh方法:
热门文章
- html ready 调用函数,Chrome和JQuery问题 - $(document).ready(function(){});在页面加载之前调用...
- php接收post写入文件,PHP中Post和Get获取数据写入文件中
- java正式测试数据隔离,开发环境要不要和测试环境隔离?
- Linux中安装oracle
- 安卓获取手机路径方法
- anconda设置镜像源_管理2000+Docker镜像,Kolla是如何做到的
- Jsp+Servlet+Mysql实现的在线图书商城源码
- 如何破解linux用户帐号密码二
- js的简单介绍及基本用法
- java中的容器问题