Skip to content

Latest commit

 

History

History
103 lines (65 loc) · 3.44 KB

CHANGELOG.md

File metadata and controls

103 lines (65 loc) · 3.44 KB

Unreleased

  • Add Config#extra to store configuration metadata. It can be used for per server middleware configuration.

0.10.0

  • Added instance scoped middlewares. See: #53
  • Allow subclasses of accepted types as command arguments. Fix: #51
  • Improve hiredis driver error messages.

0.9.0

  • Automatically reconnect if the process was forked.

0.8.1

  • Make the client resilient to Timeout.timeout or Thread#kill use (it still is very much discouraged to use either). Use of async interrupts could cause responses to be interleaved.
  • hiredis: handle commands returning a top-level false (no command does this today, but some extensions might).
  • Workaround a bug in Ruby 2.6 causing a crash if the debug gem is enabled when redis-client is being required. Fix: #48

0.8.0

  • Add a connect interface to the instrumentation API.

0.7.4

  • Properly parse script errors on pre 7.0 redis server.

0.7.3

  • Fix a bug in url parsing conflicting with the path option.

0.7.2

  • Raise a distinct RedisClient::OutOfMemoryError, for Redis OOM errors.
  • Fix the instrumentation API to be called even for authentication commands.
  • Fix url: configuration to accept a trailing slash.

0.7.1

  • Fix #pubsub being called when reconnection is disabled (redis-rb compatibility fix).

0.7.0

  • Sentinel config now accept a list of URLs: RedisClient.sentinel(sentinels: %w(redis://example.com:7000 redis://example.com:7001 ..))

0.6.2

  • Fix sentinel to not connected to s_down or o_down replicas.

0.6.1

  • Fix REDIS_REPLY_SET parsing in hiredis.

0.6.0

  • Added protocol: 2 options to talk with Redis 5 and older servers.
  • Added _v versions of call methods to make it easier to pass commands as arrays without splating.
  • Fix calling blocking_call with a block in a pipeline.
  • blocking_call now raise ReadTimeoutError if the command didn't complete in time.
  • Fix blocking_call to not respect retry_attempts on timeout.
  • Stop parsing RESP3 sets as Ruby Set instances.
  • Fix SystemStackError when parsing very large hashes. Fix: #30
  • hiredis now more properly release the GVL when doing IOs.

0.5.1

  • Fix a regression in the scan familly of methods, they would raise with ArgumentError: can't issue an empty redis command. Fix: #24

0.5.0

  • Fix handling of connection URLs with empty passwords (redis://:[email protected]).
  • Handle URLs with IPv6 hosts.
  • Add RedisClient::Config#server_url as a quick way to identify which server the client is pointing to.
  • Add CommandError#command to expose the command that caused the error.
  • Raise a more explicit error when connecting to older redises without RESP3 support (5.0 and older).
  • Properly reject empty commands early.

0.4.0

  • The hiredis driver have been moved to the hiredis-client gem.

0.3.0

  • hiredis is now the default driver when available.
  • Add RedisClient.default_driver=.
  • #call now takes an optional block to cast the return value.
  • Treat #call keyword arguments as Redis flags.
  • Fix RedisClient#multi returning some errors as values instead of raising them.

0.2.1

  • Use a more robust way to detect the current compiler.

0.2.0

  • Added RedisClient.register as a public instrumentation API.
  • Fix read_timeout= and write_timeout= to apply even when the client or pool is already connected.
  • Properly convert DNS resolution errors into RedisClient::ConnectionError. Previously it would raise SocketError

0.1.0

  • Initial Release