Skip to content

Releases: dahomey-technologies/rustis

0.19.1

19 Jan 22:35

Choose a tag to compare

  • fix feature management on rustls

0.19.0

19 Jan 22:27

Choose a tag to compare

This release introduces significant performance optimizations with the new "Fast Path" serialization, simplified cluster command routing, a major refactor of error handling.

BREAKING CHANGES

  • Removal of Redis Graph: Support for the Redis Graph module has been removed, including all associated commands and internal state management.
  • Typed Error Handling: Replaced generic string-based errors with a structured ClientError enum. This provides more granular variants such as ConfigParseError, ClusterConfig, ExecCalledWithoutMulti, and UnexpectedMessageReceived. new dependency to thiserror
  • Command Signature Updates: Several commands (like evalsha) have been simplified, and internal traits now require explicit cluster routing information.

New Features & Improvements

  • WAITAOF Support: Added the WAITAOF command with integrated cluster policy management.

Performance Optimizations

  • Fast Path Serialization: Introduced FastPathCommandBuilder which optimizes the serialization of simple commands using primitives, significantly reducing CPU overhead.
  • Allocation Reduction in Pipelines: The Pipeline and transaction systems now utilize SmallVec (stack-allocated for up to 10 commands/flags) to avoid heap allocations for small batches.
  • Pipeline Capacity Reservation: Added a reserve(additional) method to pipelines to pre-allocate memory before bulk command queuing.
  • Optimized RESP Deserialization: Improved scanning logic within the RespDeserializer and added #[inline] hints to critical serialization paths.
  • Explicit Cluster Routing: Updated all core command builders (including Bloom, Generic, Hash, List, and String commands) to use .key() explicitly, ensuring reliable command routing in Redis Cluster environments.
  • Cluster Request/Response Policies: Refactored commands like SLOWLOG and TOUCH to include explicit RequestPolicy (e.g., AllShards, MultiShard) and ResponsePolicy (e.g., AggSum), improving behavior across complex topologies.
  • switched allocator to mimalloc

0.18.0

08 Jan 05:03
dd26b74

Choose a tag to compare

BREAKING CHANGES:

  • removed resp::Arg trait. From now own, commands expect a type that implements the Serialize trait for more flexibility and to be more standard.
  • CommandBuider struct has been introduced to serialize command arguments on the fly into a RESP buffer for less allocations and less copies
  • Command struct is now based on a Bytes RESP buffer and a command name & arguments layout to extract in performant way name & arguments on demand.
  • All high level commands & network layer have been refactored consequently

0.17.0

17 Dec 22:00
c9b2215

Choose a tag to compare

  • Refactored Args and Response traits for more simplicity
  • Removed uncessary pubsub statuses in NetworkHandler thanks to RESP3

0.6.13

18 Nov 08:20
6168246

Choose a tag to compare

  • Clarify pub/sub implementation in documentation

0.16.2

10 Nov 17:26

Choose a tag to compare

  • fix: don't panic on slice resp_buf to display
  • fix Cache compilation after change in moka API.

0.16.1

11 Jul 07:52
98568ef

Choose a tag to compare

Fix release compilation

0.16.0

08 Jul 17:30

Choose a tag to compare

  • Added client-side caching support

0.15.2

07 Jul 13:18

Choose a tag to compare

New optional feature json: added Json and JsonRef wrappers for Redis JSON (de)serialization.

  • Added Json<T> for deserializing JSON-encoded bulk strings from Redis responses.
  • Added JsonRef<'a, T> for serializing Rust values to JSON when sending commands.

0.15.1

05 Jul 22:10

Choose a tag to compare

  • Added generic iterator-based argument helpers (single_arg_iter, single_arg_ref_iter, key_value_args_iter, key_value_args_ref_iter) to efficiently build command arguments from any clonable iterator or iterator of references.