PackageTrack
Sign in Get early access

fred

An async client for Redis and Valkey.

10.1.0 8.2M downloads/mo #3459 most downloaded on crates.io aembke/fred.rs

What this package is like to depend on

Last release 1 years ago

no release in 18 months

Release timing varies

gaps range from 2 weeks to 4 months

Some releases are documented

notes for 48 of 91 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

100 releases · first in 2017

0 releases in the last 12 months

see the full history below

Release timeline

100 releases · Oct 2017 to Feb 2025
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 100
  1. 10.1.0 27 Feb 2025
    Release notes
    • Add dynamic pool
    • Add TCP user timeouts
    Open source →
    Release notes
    • Add DynamicPool interface
    • Add actix-web example
    • Add tcp-user-timeouts feature flag
    Open source →
  2. 10.0.4 25 Jan 2025
    Release notes
    • Fix unresponsive checks with blocked connections
    • Fix potential hanging calls to quit when called concurrently by multiple tasks
    Open source →
    Release notes
    • Fix unresponsive checks with blocked connections
    • Fix potential hanging calls to quit when called concurrently by multiple tasks
    Open source →
  3. 10.0.3 29 Dec 2024
    Release notes
    • Support SCAN functions in mocks
    Open source →
    Release notes
    • Support SCAN functions in mocks
    Open source →
  4. 10.0.2 23 Dec 2024
    Release notes
    • Fix intermittent transaction timeouts
    Open source →
    Release notes
    • Fix intermittent transaction timeouts
    Open source →
  5. 10.0.1 05 Dec 2024
    Release notes
    • Fix reconnection errors when no connections exist
    Open source →
    Release notes
    • Fix reconnection errors when no connections exist
    Open source →
  6. 10.0.0 30 Nov 2024
    Release notes
    • Reduced memory footprint and significant write throughput improvements
    • Rename common interfaces to remove Redis prefixes
    • Add WITHSCORES to ZRANK and ZREVRANK
    • Add GT|LT|NX|XX options to EXPIRE and EXPIREAT
    • Add scan_page interface
    • Add optional message to PING
    • Remove deprecated or redundant config options
    • Refactor public types into submodules
    • Add i-hexpire feature flag
    • Support async blocks in on_* event handler functions
    • Add an interface to cancel scanning functions
    • Update rustls-native-certs to 0.8
    • Support valkey:// scheme in Config::from_url.
    • Support combining Options and Replicas clients
    Open source →
    Release notes
    • Reduced memory footprint and significant write throughput improvements
    • Rename common interfaces to remove Redis prefixes
    • Add WITHSCORES to ZRANK and ZREVRANK
    • Add GT|LT|NX|XX options to EXPIRE and EXPIREAT
    • Add scan_page interface
    • Add optional message to PING
    • Remove deprecated or redundant config options
    • Refactor public types into submodules
    • Add i-hexpire feature flag
    • Support async blocks in on_* event handler functions
    • Add an interface to cancel scanning functions
    • Update rustls-native-certs to 0.8
    • Support valkey:// scheme in Config::from_url.
    • Support combining Options and Replicas clients

    Upgrading from 9.x

    This update contains some significant performance improvements in the form of reduced Tokio scheduling overhead and reduced memory usage during the frame encoding process. It also contains several cosmetic changes designed to support future scenarios where Valkey and Redis start to diverge from one another.

    Notable Breaking Changes

    The compiler should guide callers through most of these changes.

    • The auto_pipeline config option was removed. All clients now automatically pipeline commands across Tokio tasks.
    • The BackpressureConfig struct was removed. Callers should use max_command_buffer_len instead.
    • The HEXPIRE, HTTL, etc, commands are now gated by an i-hexpire feature flag. Note that this requires Redis > =7.2.5.
    • Some potentially redundant ReplicaConfig fields were removed. The client now uses the associated ReconnectPolicy fields instead, where applicable.
    • The types module was becoming too large and needed refactoring. Many types were moved to submodules, which likely requires changes to certain import statements.
    • Many of the common public types were renamed to remove the Redis prefix, such as RedisConfig, RedisClient, RedisPool, etc.
    • rustls-native-certs was upgraded to 8.x.
    • The specialize-into-bytes feature flag was removed. This is now the default behavior.
    • The on_error and error_rx event handler interface now contains an optional server identifier.

    Behavior Changes

    • In the past fred spawned a separate task per connection in order to read from all sockets concurrently. In 10.0.0 each client reads and writes to all connections in a single task.
    • Write throughput is improved by a factor of 3-5x depending on the use case.
    • All transactions are now pipelined automatically.
    Open source →
  7. 9.4.0 07 Nov 2024
    Release notes
    • Change scanning functions to automatically continue when the current page is dropped
    • Add scan_buffered and scan_cluster_buffered interfaces
    • Add specialize-into-bytes feature flag
    Open source →
    Release notes
    • Change scanning functions to automatically continue when the current page is dropped
    • Add scan_buffered and scan_cluster_buffered interfaces
    • Add specialize-into-bytes feature flag
    Open source →
  8. 9.3.0 20 Oct 2024
    Release notes
    • Add SETNX, ECHO, TYPE, EXPIRETIME, and PEXPIRETIME commands
    • Add hashmap expiration commands (HTTL, HEXPIRE, etc)
    • Change active_connections to preempt reconnections
    Open source →
    Release notes
    • Add SETNX, ECHO, TYPE, EXPIRETIME, and PEXPIRETIME commands
    • Add hashmap expiration commands (HTTL, HEXPIRE, etc)
    • Change active_connections to preempt reconnections
    Open source →
  9. 9.2.1 05 Sep 2024
    Release notes
    • Fix docs.rs documentation features
    Open source →
  10. 9.2.0 04 Sep 2024
    Release notes
    • Add initial support for the Glommio runtime
    • Add credential-provider feature
    • Fix pipeline processing in mocks
    • Support pipelined transactions
    Open source →
    Release notes
    • Add initial support for the Glommio runtime
    • Add credential-provider feature
    • Fix pipeline processing in mocks
    • Support pipelined transactions
    Open source →
  11. 9.1.2 23 Aug 2024
    Release notes
    • Fix FT.AGGREGATE command with SORTBY operation
    Open source →
    Release notes
    • Fix FT.AGGREGATE command with SORTBY operation
    Open source →
  12. 9.1.1 21 Aug 2024
    Release notes
    • Fix tracing span names and missing fields
    Open source →
  13. 9.1.0 18 Aug 2024
    Release notes
    • Add RediSearch interface.
    • Adapt testing and CI processes to test Redis and Valkey
    • Add FromIterator impl to RedisMap
    • Add ExclusivePool client
    • Support redis+unix config URLs for Unix domain sockets
    • Add PEXPIRE and PEXPIREAT
    • Replace trust-dns-resolver with hickory-resolver
    Open source →
  14. 9.0.3 01 May 2024
    Release notes
    • Fix bytes_utils min version
    • Fix rustls reexports with enable-rustls-ring
    Open source →
  15. 9.0.2 30 Apr 2024
    Release notes
    • Add enable-rustls-ring feature flag
    Open source →
  16. 9.0.1 15 Apr 2024
    Release notes
    • Fix partial-tracing imports
    Open source →
  17. 9.0.0 15 Apr 2024
    Release notes

    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.
    Open source →
  18. 8.0.6 31 Mar 2024
    Release notes
    • Add TransactionInterface to RedisPool
    Open source →
  19. 8.0.5 14 Mar 2024
    Release notes
    • Add conversion from HashMap to MultipleOrderedPairs.
    • Remove lazy_static
    • Update examples
    Open source →
  20. 8.0.4 27 Feb 2024
    Release notes
    • Fix tracing span annotations.
    Open source →
  21. 8.0.3 20 Feb 2024
    Release notes
    • Box large futures to reduce stack usage.
    Open source →
  22. 8.0.2 12 Feb 2024
    Release notes
    • Fix cluster replica failover at high concurrency.
    • Fix potential race condition initializing the mocking layer.
    Open source →
  23. 8.0.1 29 Jan 2024
    Release notes
    • Add a shorthand init interface.
    • Fix cluster replica failover with unresponsive connections.
    • Fix RESP3 connection init when used without a password.
    Open source →
  24. 8.0.0 19 Jan 2024
    Release notes
    • 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.
    Open source →
  25. 7.1.2 12 Jan 2024
    Release notes
    • Fix intermittent cluster routing errors
    Open source →
  26. 7.1.1 08 Jan 2024
    Release notes
    • Fix cluster failover in transactions
    Open source →
  27. 7.1.0 13 Dec 2023
    Release notes
    • 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
    Open source →
  28. 7.0.0 08 Oct 2023
    Release notes
    • 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.
    Open source →
  29. 7.0.0-rc.1 06 Oct 2023 pre-release

    Nothing published for this version

  30. 6.3.2 19 Sep 2023
    Release notes
    • Fix a bug with connection errors unexpectedly ending the connection task.
    Open source →
  31. 6.3.1 30 Aug 2023
    Release notes
    • Update various dependencies
    • Move pretty-env-logger to dev-dependencies
    • Update rustfmt.toml
    Open source →
  32. 6.3.0 15 May 2023
    Release notes
    • Fix cluster replica discovery with Elasticache
    • Fix cluster replica READONLY usage
    • Fix compilation error with full-tracing
    • Support Vec<(T1, T2, ...)> with FromRedis
    Open source →
  33. 6.2.1 02 May 2023
    Release notes
    • Fix cluster failover with paused nodes
    Open source →
  34. 6.2.0 01 May 2023
    Release notes
    • Add Pipeline::try_all
    • Add missing pubsub commands
    • Improve docs, examples
    Open source →
  35. 6.1.0 23 Apr 2023
    Release notes
    • 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
    Open source →
  36. 6.0.0 19 Mar 2023
    Release notes
    • 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.
    Open source →
  37. 6.0.0-beta.3 18 Mar 2023 pre-release

    Nothing published for this version

  38. 6.0.0-beta.2 12 Dec 2022 pre-release

    Nothing published for this version

  39. 6.0.0-beta.1 12 Dec 2022 pre-release

    Nothing published for this version

  40. 5.2.0 01 Sep 2022
    Release notes
    • Reduce number of tokio features
    • Use 6379 as default cluster port in from_url
    • Fix RESP3 auth error (https://github.com/aembke/fred.rs/issues/54)
    Open source →
  41. 5.1.0 13 Jun 2022
    Release notes
    • Update redis-protocol and nom
    • Add no-client-setname feature flag
    Open source →
  42. 5.0.0 04 May 2022
    Release notes
    • Bug fixes
    • Support URL parsing into a RedisConfig
    • Update bzpopmin and bzpopmax return type
    • Remove unimplemented mocks feature
    Open source →
  43. 5.0.0-beta.1 14 Mar 2022 pre-release
    Release notes
    • 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
    Open source →
  44. 4.3.2 15 Jan 2022
    Release notes
    • Fix https://github.com/aembke/fred.rs/issues/27
    • Fix https://github.com/aembke/fred.rs/issues/26
    Open source →
  45. 4.3.1 20 Dec 2021
    Release notes
    • 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
    Open source →
  46. 4.3.0 05 Dec 2021
    Release notes
    • Add sentinel-auth feature
    Open source →
  47. 4.2.3 01 Dec 2021
    Release notes
    • Add NotFound error kind variant
    • Use NotFound errors when casting nil server responses to non-nullable types
    Open source →
  48. 4.2.2 30 Nov 2021
    Release notes
    • Remove some unnecessary async locks
    • Fix client pool wait_for_connect implementation
    Open source →
  49. 4.2.1 01 Nov 2021
    Release notes
    • Fix https://github.com/aembke/fred.rs/issues/11
    Open source →
  50. 4.2.0 28 Sep 2021
    Release notes
    • Support Sentinel clients
    • Fix broken doc links
    Open source →
  51. 4.1.0 27 Sep 2021
    Release notes
    • Support Redis Sentinel
    • Sentinel tests
    • Move metrics behind compiler flag
    Open source →
  52. 4.0.0 18 Sep 2021
    Release notes
    • Add generic response interface.
    • Add tests
    Open source →
  53. 3.0.0 12 Sep 2021
    Release notes

    See below.

    Open source →
  54. 3.0.0-beta.4 12 Sep 2021 pre-release
    Release notes
    • Add support for the MONITOR command.
    Open source →
  55. 3.0.0-beta.3 30 Aug 2021 pre-release
    Release notes
    • Redo cluster state change implementation to diff CLUSTER NODES changes
    • MOVED/ASK errors no longer initiate reconnection logic
    • Fix chaos monkey tests
    Open source →
  56. 3.0.0-beta.2 25 Aug 2021 pre-release
    Release notes
    • 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
    Open source →
  57. 3.0.0-beta.1 14 Aug 2021 pre-release
    Release notes
    • 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
    Open source →
  58. 2.1.1 26 Jul 2021

    Nothing published for this version

  59. 2.1.0 16 Jul 2021

    Nothing published for this version

  60. 2.0.2 11 Jun 2021

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive