github dahomey-technologies/rustis 0.19.0

latest release: 0.19.1
11 hours ago

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

Don't miss a new rustis release

NewReleases is sending notifications on new releases.