nodejs mysql更新redis_node中的redis使用--ioredis

本文探讨了Node.js环境下,由于Redis的单线程特性适合单连接,而MySQL适合使用连接池。推荐使用ioredis库,它是高性能的Redis客户端,支持Pipeline、Lua脚本等功能,有助于提升Node.js应用的Redis操作性能。
摘要由CSDN通过智能技术生成

nodejs 链接 redis/mysql 连接池

redis是单线程作业,所以不管查询任务是由一个链接发来的还是多个链接发来的,redis是串行的执行。并通过当前的链接返回客户端。nodejs接受redis的返回后,不管是不是并行,都要等主线程空闲下来才能一个个处理服务器返回的数据。

再看mysql~

mysql不是单线程服务的,可以并行处理多个查询请求。

mysql会为每一个链接创建一个单独的线程查询。redis数据基本在内存中,mysql会大量的读取磁盘的I/O,多线程比较快。

但是nodejs是单线程的。但是它调用的I/O指令等是通过另外的线程做的,I/O指令完成后就给主线程小任务,回调函数。

nodejs主线程一个,但是IO线程会有多个。

nodejs 使用多个连接来连接mysql。多连接是需要连接池的,有连接池就避免了每次连接都要去创建销毁的消耗了。

综上:nodejs + mysql用线程池是没什么问题的。nodejs + redis只用单个连接就够。

所以有了连接管理模块,egg-redis。

redis性能

错误原因:redis client的业务代码以及redis client的I/O性能。

redis client采用的是单链接模式,底层采用的非阻塞网络I/O,

调优:pipeline,script

无依赖批量请求采用pipeline。

redis高性能体现在服务端处理能力,但瓶颈往往出现在客户端,因此增强客户端I/O能力与并发并行多客户端才是高并发解决方案。

ioredis

性能为中心,功能齐全的,支持Redis >= 2.6.12 and (Node.js >= 6).

npm install ioredis

basic usage

var Redis = require('ioredis');

var redis = new Redis();

redis.set('foo', 'bar');

redis.get('foo', function (err, result) {

console.log(result);

});

// Or using a promise if the last argument isn't a function

redis.get('foo').then(function (result) {

console.log(result);

});

// Arguments to commands are flattened, so the following are the same:

redis.sadd('set', 1, 3, 5, 7);

redis.sadd('set', [1, 3, 5, 7]);

// All arguments are passed directly to the redis server:

redis.set('key', 100, 'EX', 10);

Connect to Redis

new Redis() // Connect

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值