Skip to content

Latest commit

 

History

History
357 lines (257 loc) · 11.6 KB

CHANGELOG.md

File metadata and controls

357 lines (257 loc) · 11.6 KB

9.0.3

  • Fix bytes_utils min version
  • Fix rustls reexports with enable-rustls-ring.

9.0.2

  • Add enable-rustls-ring feature flag

9.0.1

  • Fix partial-tracing imports

9.0.0

This version should reduce compilation times for most use cases.

  • RPITIT / AFIT
  • Set MSRV to 1.75
  • Upgrade rustls to 0.23
  • Upgrade redis-protocol to 5.0.0
  • Split public interfaces with new feature flags.
  • Add ClusterDiscoveryPolicy configuration options.
  • Add SORT and SORT_RO
  • Add cluster_hash policy to Options
  • Change tracing span names to follow OpenTelemetry naming conventions.

Upgrading from 8.x

  • Callers that use certain managed services or Kubernetes-based deployment models should review the new ClusterDiscoveryPolicy.
  • Double-check the new feature flags. The codec feature was also moved to redis-protocol.
  • Rustls - Check the new aws-lc-rs requirements or switch back to rustls/ring.
  • Note the new tracing span names.

8.0.6

  • Add TransactionInterface to RedisPool

8.0.5

  • Add conversion from HashMap to MultipleOrderedPairs.
  • Remove lazy_static
  • Update examples

8.0.4

  • Fix tracing span annotations.

8.0.3

  • Box large futures to reduce stack usage.

8.0.2

  • Fix cluster replica failover at high concurrency.
  • Fix potential race condition initializing the mocking layer.

8.0.1

  • Add a shorthand init interface.
  • Fix cluster replica failover with unresponsive connections.
  • Fix RESP3 connection init when used without a password.

8.0.0

  • Remove the globals interface.
  • Support unix domain sockets.
  • Add a Redis TimeSeries interface.
  • Improve unresponsive connection checks.
  • Move several feature flags to configuration options.
  • Add a benchmarking tool.
  • Update to Rustls 0.22.
  • Add several new connection configuration options.
  • Add a fail_fast flag to commands.
  • Switch to crossbeam types internally.

Upgrading from 7.x

Using ..Default::default() with the various configuration structs can avoid most of the breaking changes here.

Notable changes:

  • Several configuration options were moved from globals to ConnectionConfig and PerformanceConfig.
  • Several feature flags were moved to configuration fields, including:
    • ignore-auth-error
    • pool-prefer-active
    • reconnect-on-auth-error
    • auto-client-setname
  • The on_message and on_keyspace_event functions were renamed and moved to the EventInterface. They now use the same naming conventions as the other event streams.

7.1.2

  • Fix intermittent cluster routing errors

7.1.1

  • Fix cluster failover in transactions

7.1.0

  • Fix panic when reconnect delay jitter is 0
  • Support percent encoding in URLs
  • Support tuples for RedisValue and MultipleKeys
  • Make CLIENT ID checks optional
  • Update dependencies

7.0.0

  • Added a new client builder and configuration interface.
  • Reworked or removed the majority of the globals interface.
  • Support multiple IP addresses in the Resolve interface.
  • Add with_options command configuration interface.
  • Replaced the no-client-setname feature flag with auto-client-setname.
  • Add an interface to configure TCP socket options.
  • Removed the automatic serde_json::Value -> RedisValue type conversion logic.
    • This unintentionally introduced some ambiguity on certain interfaces.
    • The RedisValue -> serde_json::Value type conversion logic was not changed.
  • Reworked the majority of the RedisPool interface.
  • Moved and refactored the on_* functions into a new EventInterface.
  • Fixed bugs with the Replica routing implementation.
  • Fixed bugs related to parsing single-element arrays.
  • Changed several FromRedis type conversion rules. See below or the FromRedis docs for more information.
  • Add a RedisJSON interface.
  • Add a RESP2 and RESP3 codec interface.

Upgrading from 6.x

Notable interface changes:

  • ArcStr has been replaced with bytes_utils::Str.
  • Timeout arguments or fields now all use std::time::Duration.
  • Many of the old global or performance config values can now be set on individual commands via the with_options interface.
  • The RedisPool interface now directly implements ClientLike rather than relying on Deref shenanigans.
  • The on_* event functions were moved and renamed. Reconnection events now include the associated Server.
  • The tls_server_name field on Server is now properly gated by the TLS feature flags.
  • Mocks are now optional even when the feature flag is enabled.

Notable implementation Changes:

  • Pipeline and Transaction structs can now be reused. Calling exec, all, last, or try_all no longer drains the inner command buffer.
  • Many of the default timeout values have been lowered significantly, often from 60 sec to 10 sec.
  • In earlier versions the FromRedis trait implemented a few inconsistent or ambiguous type conversions policies.
    • Most of these were consolidated under the default-nil-types feature flag.
    • It is recommended that callers review the updated FromRedis docs or see the unit tests in responses.
  • The connect function can now be called more than once to force reset all client state.

6.3.2

  • Fix a bug with connection errors unexpectedly ending the connection task.

6.3.1

  • Update various dependencies
  • Move pretty-env-logger to dev-dependencies
  • Update rustfmt.toml

6.3.0

  • Fix cluster replica discovery with Elasticache
  • Fix cluster replica READONLY usage
  • Fix compilation error with full-tracing
  • Support Vec<(T1, T2, ...)> with FromRedis

6.2.1

  • Fix cluster failover with paused nodes

6.2.0

  • Add Pipeline::try_all
  • Add missing pubsub commands
  • Improve docs, examples

6.1.0

  • Add a client tracking interface.
  • Add a global config value for broadcast channel capacity.
  • Add an interface to interact with individual cluster nodes.
  • Fix missing impl StreamInterface for Transaction
  • Add all RedisClient command traits to SubscriberClient

6.0.0

  • Refactored the connection and protocol layer.
  • Add a manual Pipeline interface for pipelining commands within a task.
  • Add a Replica client for interacting with replica nodes.
  • Rework the Transaction interface to buffer commands in memory before EXEC/DISCARD.
  • Rework the cluster discovery and failover implementation.
  • Rework the MOVED/ASK implementation to more quickly and reliably follow cluster redirects.
  • Rework the sentinel interface to more reliably handle failover scenarios.
  • Fix several bugs related to detecting closed connections.
  • Support the functions interface.
  • Add Script, Library, and Function structs.
  • Add Message and MessageKind pubsub structs.
  • Add a DNS configuration interface.
  • Rework the native-tls interface to support fully customizable TLS configurations.
  • Add rustls support.
    • Note: both TLS feature flags can be used at the same time.
  • Add a mocking layer interface.

Updating from 5.x

Potentially breaking changes in 6.x:

  • Switched from (String, u16) tuples to the Server struct for all server identifiers.
  • New TLS feature flags: enable-rustls and enable-native-tls.
    • vendored-tls is now vendored-openssl
  • New TLS configuration process: see the example.
  • New transaction interface.
    • Transaction commands are now buffered in memory before calling exec() or discard().
  • New backpressure configuration options, most notably the Drain policy. This is now the default.
  • Changed the type and fields on BackpressurePolicy::Sleep.
  • New custom command interface for managing cluster hash slots.
  • Removed or renamed some fields on RedisConfig.
  • Changed the pubsub receiver interface to use Message instead of (String, RedisValue) tuples.
  • Changed the on_* family of functions to return a BroadcastReceiver.
  • The FromRedis trait converts RedisValue::Null to "nil" with String and Str.

5.2.0

  • Reduce number of tokio features
  • Use 6379 as default cluster port in from_url
  • Fix RESP3 auth error (#54)

5.2.0

  • Reduce number of tokio features
  • Use 6379 as default cluster port in from_url
  • Fix RESP3 auth error (#54)

5.2.0

  • Reduce number of tokio features
  • Use 6379 as default cluster port in from_url
  • Fix RESP3 auth error (#54)

5.1.0

  • Update redis-protocol and nom
  • Add no-client-setname feature flag

5.0.0

  • Bug fixes
  • Support URL parsing into a RedisConfig
  • Update bzpopmin and bzpopmax return type
  • Remove unimplemented mocks feature

5.0.0-beta.1

  • Rewrite the protocol parser, so it can decode frames without moving or copying the underlying bytes
  • Change most command implementations to avoid unnecessary allocations when using static str slices
  • Rewrite the public interface to use different traits for different parts of the redis interface
  • Relax some restrictions on certain commands being used in a transaction
  • Implement the Streams interface (XADD, XREAD, etc.)
  • RESP3 support
  • Move most perf configuration options from globals to client-specific config structs
  • Add backpressure configuration options to the client config struct
  • Fix bugs that can occur when using non-UTF8 byte arrays as keys
  • Add the serde-json feature
  • Handle more complicated failure modes with Redis clusters
  • Add a more robust and specialized pubsub subscriber client
  • Ergonomics improvements on the public interfaces
  • Improve docs
  • More tests

4.3.2

4.3.1

  • Fix authentication bug with sentinel-auth tests
  • Update tests and CI config for sentinel-auth feature
  • Add more testing scripts, update docs
  • Switch to CircleCI

4.3.0

  • Add sentinel-auth feature

4.2.3

  • Add NotFound error kind variant
  • Use NotFound errors when casting nil server responses to non-nullable types

4.2.2

  • Remove some unnecessary async locks
  • Fix client pool wait_for_connect implementation

4.2.1

4.2.0

  • Support Sentinel clients
  • Fix broken doc links

4.1.0

  • Support Redis Sentinel
  • Sentinel tests
  • Move metrics behind compiler flag

4.0.0

  • Add generic response interface.
  • Add tests

3.0.0

See below.

3.0.0-beta.4

  • Add support for the MONITOR command.

3.0.0-beta.3

  • Redo cluster state change implementation to diff CLUSTER NODES changes
  • MOVED/ASK errors no longer initiate reconnection logic
  • Fix chaos monkey tests

3.0.0-beta.2

  • Extend and refactor RedisConfig options
  • Change RedisKey to work with bytes, not str
  • Support unblocking clients with a control connection
  • First draft of chaos monkey tests
  • Custom reconnect errors feature

3.0.0-beta.1

  • Rewrite to use async/await
  • Add Lua support
  • Add transaction support
  • Add hyperloglog, geo, acl, memory, slowlog, and cluster command support
  • Add tests
  • Add pipeline_test application

< 3.0.0

See the old repository at azuqua/fred.rs.