This file documents the changes in Radix versions that are listed below.
Items should be added to this file as:
### YYYY-MM-DD Release
+ Additional changes.
+ More changes.
- Add Float64 method to redis.Reply, courtesy of @viblo
- Major refactoring of encoding to be significantly faster and to incur fewer memory allocations
- Add Pattern field to SubRepy in extra/pubsub
- DialTimeout now uses DialTimeout, instead of only using timeout value for read/write timeouts
- Fix multiple bugs in extra/cluster that prevented proper failover
- Add throttle to Reset calls in cluster
- Make the cluster package be thread-safe
- Add a CarefullyPutMaster method to sentinel, analogous to the CarefullyPut method in pool
- Updated the sentinel package's documentation to include some examples
- Upgrade tests to use the testify library. It's a little easier to use than the old one
- Implement the cluster package
- Small upgrades to pool and resp
- Fix writing float values and other arbitrary values in resp, which would have caused a connection to hang if a command with a float was ever sent
- Implement CmdError so clients can tell an application level error from an external error
- Fix bug in pubsub package preventing patterned sub commands from working (thanks @hayesgm!)
- Fix bug in pubsub where it wasn't pulling all subscribe replies
- Update examples
- Fix reading of bulk strings for some rare cases
- Make sentinel package return error and not ClientError
- Fix Cmd not flattening arguments properly
- Make Client's connection be publicly accessible
- Rewrite encoding/decoding out into its own sub-package (
resp
) - Add
extra
sub-package with the following features- Simple connection pool
- Pub/Sub client
- Sentinel client with transparent failover
- Removed reconnecting logic as it didn't work as intended.
- Removed unused Cmd field from Error.
- Rewrote benchmark tool.
- Issue #16: On failed request writes, Radix will now reconnect and retry once.
- Issue #15: Fixed deadlock issue with laggy networks (thanks Guihong Bai).
- Issue #12: Fixed missing ReplyError types from error replies (thanks Guihong Bai).
- Issue #11: Fixed broken authentication (thanks Fabio Kung).
- Issue #9: Error replies' methods now return the reply error instead of some method specific error (thanks Russ Ross).
- Fixed a bug in parameter formatting that caused crashing when nil parameter was given.
- Removed Reply.Nil(), it is redundant. Do a
Reply.Type == ReplyNil
comparison instead. - Reply.List() returns now nil elements as empty strings instead of giving an error.
- Reply.Hash() does not give error on nil values anymore, instead, nil values are just not set.
- Major parts rewritten, mostly in connection. About 2x performance boosts.
- Fixed a map parameter parsing error.
- Various other fixes.
- Fixed a race condition in connection pool that caused panic when GOMAXPROCS>1.
- Fixed a bug where map arguments where not formatted always right.
- Reply error messages now include the command that caused the error.
- Added a rudimentary benchmark tool (WIP).
-
New API for Client/MultiCommand commands.
Command methods are now autogenerated by gen.bash. The old API had a problem of common namespace conflicts when doing
. import ".../redis"
. -
Renames:
- Subscription.PSubscribe() -> Subscription.Psubscribe()
- Subscription.PUnsubscribe() -> Subscription.Punsubscribe()
- MessagePSubscribe -> MessagePsubscribe
- MessagePUnsubscribe -> MessagePunsubscribe
- MessagePMessage -> MessagePmessage
- Package name changed to redis (project name is still Radix).
- Merged commits from Bobby Powers.
- Fix for memory leak in connection closing.
- Fix for reconnection.
- Minor changes to Reply API.
- New API for commands (thanks Bobby Powers).
- Source code moved to its own directory.
- Go v1.0 compatible.
- Fixed broken tests.
- Fixed issue #1: Very high memory usage due to bug in timeout error handling.
- Fixed issue #2: Graceful reset of Connections when connection error is encountered.
- Removed support for Client.Select method. Use separate clients for and MOVE command for controlling multiple databases instead.
- Various small fixes to make the package work with Go weekly/Go 1.
- Renamed the package name to radix.
- Removed Makefiles as Go 1's "go build" deprecates them.
- Moved files from redis/ to the root directory of the project.
- Rewrote most of the godoc strings to match more Go conventions.
- Minor improvements to channel usage.
- NOTE: The go tests are currently partially broken, because gocheck seems to be broken with newest version of Go.
- Updated connection pool to reuse old connections more efficiently.
- First stable release.