1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-11 22:42:42 +03:00

New RESP2 parser (#1899)

* parser

* a new RESP parser :)

* clean code

* fix simple string and bulk string cursor

* performance improvements

* change typescript compiler target

* do not use stream.Transform

* Update decoder.ts

* fix for 1d09acb

* improve integer performance

* revert 1d09acb

* improve RESP2 decoder performance

* improve performance

* improve encode performance

* remove unused import

* upgrade benchmark deps

* clean code

* fix socket error handlers, reset parser on error

* fix #2080 - reset pubSubState on socket error

* reset decoder on socket error

* fix pubsub

* fix "RedisSocketInitiator"

* fix returnStringsAsBuffers

* fix merge
This commit is contained in:
Leibale Eidelman
2022-04-25 08:24:33 -04:00
committed by GitHub
parent b1a0b48d2c
commit 23b65133c9
21 changed files with 709 additions and 163 deletions

View File

@@ -1,7 +1,6 @@
import { EventEmitter } from 'events';
import * as net from 'net';
import * as tls from 'tls';
import { encodeCommand } from '../commander';
import { RedisCommandArguments } from '../commands';
import { ConnectionTimeoutError, ClientClosedError, SocketClosedUnexpectedlyError, ReconnectStrategyError } from '../errors';
import { promiseTimeout } from '../utils';
@@ -157,7 +156,7 @@ export default class RedisSocket extends EventEmitter {
this.#writableNeedDrain = false;
this.emit('drain');
})
.on('data', (data: Buffer) => this.emit('data', data));
.on('data', data => this.emit('data', data));
resolve(socket);
});
@@ -192,7 +191,7 @@ export default class RedisSocket extends EventEmitter {
throw new ClientClosedError();
}
for (const toWrite of encodeCommand(args)) {
for (const toWrite of args) {
this.#writableNeedDrain = !this.#socket.write(toWrite);
}
}