NodeRedis / node-redis-parser

A high performance Redis protocol (RESP) parser for JavaScript. Used by Node Redis & ioredis.
MIT License
88 stars 36 forks source link

Support RESP3 #50

Open BridgeAR opened 5 years ago

BridgeAR commented 5 years ago

This adds full support for RESP3 while keeping backwards compatibility. Most things should stay on par performance wise.

My intention here is to first fully support the spec and to improve the performance later on for the new data types. Especially as the logic would become increasingly difficult otherwise due to the new attribute type (data that should be ignored while delivering it to the user in an unspecified way).

I have no strong opinion about the way push data and attributes is implemented and I am happy to get some input about those.

@luin @Salakar PTAL

BridgeAR commented 5 years ago

@Salakar you assigned this to yourself, do you still want to have a look at it?

Salakar commented 5 years ago

@Salakar you assigned this to yourself, do you still want to have a look at it?

I did sorry, but my time has been 💩 if you'd like to continue without my review that's fine ofc 👍

Salakar commented 4 years ago

Could we not keep the RESP 2 & 3 parsers separate files and export each for clients to use, that way logic for RESP2 doesn't need to interfere with RESP3 and each can be optimised for their specific protocol version.

My understanding from this was that to switch to RESP3 the client needs to send a HELLO command during connection handshake anyway whilst using RESP2 by default, meaning the client code will know based on the response which protocol to use - e.g. client starts on RESP2 then swaps it out for RESP3 if HELLO command says the protocol is supported?

This also has the added benefit of keeping RESP2 unchanged and stable whilst also future proofing the parser should any new protocol versions need adding in future.

IAmEddieDean commented 3 years ago

has anyone taken a look at this anytime recently? happy to help in any way I can, but don't wanna redo someone else's work or step on anyone's toes.

Miantang commented 2 years ago

has anyone taken a look at this anytime recently?