Releases: redis/node-redis
v.2.4.1
TLS & key prefixing
Features
- Added
tls
option to iniate a connection to a redis server behind a TLS proxy. Thanks (@paddybyers) - Added
prefix
option to auto key prefix any command with the provided prefix (@luin & @BridgeAR) - Added
url
option to pass the connection url with the options object (@BridgeAR) - Added
client.duplicate([options])
to duplicate the current client and return a new one with the same options (@BridgeAR) - Improve performance by up to 20% on almost all use cases (@BridgeAR)
Bugfixes
- Fixed js parser handling big values slow (@BridgeAR)
- The speed is now on par with the hiredis parser.
Big data with the JS parser
v.2.3.0
v.2.3.0 - 30 Oct, 2015
Features
- Improve speed further for: (@BridgeAR)
- saving big strings (up to +300%)
- using .multi / .batch (up to +50% / on Node.js 0.10.x +300%)
- saving small buffers
- Increased coverage to 99% (@BridgeAR)
- Refactored manual backpressure control (@BridgeAR)
- Removed the high water mark and low water mark. Such a mechanism should be implemented by a user instead
- The
drain
event is from now on only emitted if the stream really had to buffer - Reduced the default connect_timeout to be one hour instead of 24h (@BridgeAR)
- Added .path to redis.createClient(options); (@BridgeAR)
- Ignore info command, if not available on server (@ivanB1975)
Bugfixes
- Fixed a js parser error that could result in a timeout (@BridgeAR)
- Fixed .multi / .batch used with Node.js 0.10.x not working properly after a reconnect (@BridgeAR)
- Fixed fired but not yet returned commands not being rejected after a connection loss (@BridgeAR)
- Fixed connect_timeout not respected if no connection has ever been established (@gagle & @benjie)
- Fixed return_buffers in pub sub mode (@komachi)
v.2.2.5
v.2.2.4
Bugfixes
- Fixed unspecific error message for unresolvable commands (@BridgeAR)
- Fixed not allowed command error in pubsub mode not being returned in a provided callback (@BridgeAR)
- Fixed to many commands forbidden in pub sub mode (@BridgeAR)
- Fixed mutation of the arguments array passed to .multi / .batch constructor (@BridgeAR)
- Fixed mutation of the options object passed to createClient (@BridgeAR)
- Fixed error callback in .multi not called if connection in broken mode (@BridgeAR)
v.2.2.3
v.2.2.2
The peregrino falcon
The peregrino falcon is the fasted bird on earth and this is what this release is all about: Increased performance for heavy usage by up to 400% [sic!] and increased overall performance for any command as well. Please check the benchmarks in the README.md for further details.
Features
- Added rename_commands options to handle renamed commands from the redis config (@digmxl & @BridgeAR)
- Added disable_resubscribing option to prevent a client from resubscribing after reconnecting (@BridgeAR)
- Increased performance (@BridgeAR)
- exchanging built in queue with @petkaantonov's double-ended queue
- prevent polymorphism
- optimize statements
- Added .batch command, similar to .multi but without transaction (@BridgeAR)
- Improved pipelining to minimize the RTT further (@BridgeAR)
Bugfixes
- Fix a javascript parser regression introduced in 2.0 that could result in timeouts on high load. (@BridgeAR)
- I was not able to write a regression test for this, since the error seems to only occur under heavy load with special conditions. So please have a look for timeouts with the js parser, if you use it and report all issues and switch to the hiredis parser in the meanwhile. If you're able to come up with a reproducable test case, this would be even better :)
- Fixed should_buffer boolean for .exec, .select and .auth commands not being returned and fix a couple special conditions (@BridgeAR)
If you do not rely on transactions but want to reduce the RTT you can use .batch from now on. It'll behave just the same as .multi but it does not have any transaction and therefor won't roll back any failed commands.
Both .multi and .batch are from now on going to cache the commands and release them while calling .exec.
Please consider using .batch instead of looping through a lot of commands one by one. This will significantly improve your performance.
Here are some stats compared to ioredis 1.9.1 (Lenovo T450s i7-5600U):
simple set
82,496 op/s » ioredis
112,617 op/s » node_redis
simple get
82,015 op/s » ioredis
105,701 op/s » node_redis
simple get with pipeline
10,233 op/s » ioredis
26,541 op/s » node_redis (using .batch)
lrange 100
7,321 op/s » ioredis
26,155 op/s » node_redis
publish
90,524 op/s » ioredis
112,823 op/s » node_redis
subscribe
43,783 op/s » ioredis
61,889 op/s » node_redis
To conclude: we can proudly say that node_redis is very likely outperforming any other node redis client.
Known issues
- The pub sub system has some flaws and those will be addressed in the next minor release
v.2.1.0
Features:
- Addded optional flush parameter to
.end
. If set to true, commands fired after using .end are going to be rejected instead of being ignored. (@crispy1989) - Addded: host and port can now be provided in a single options object. E.g. redis.createClient({ host: 'localhost', port: 1337, max_attempts: 5 }); (@BridgeAR)
- Speedup common cases (@BridgeAR)
Bugfixes:
- Fix argument mutation while using the array notation with the multi constructor (@BridgeAR)
- Fix multi.hmset key not being type converted if used with an object and key not being a string (@BridgeAR)
- Fix parser errors not being catched properly (@BridgeAR)
- Fix a crash that could occur if a redis server does return the info command as usual #541 (@BridgeAR)
- Explicitly passing undefined as a callback statement will work again. E.g. client.publish('channel', 'message', undefined); (@BridgeAR)