Skip to content

Releases: dahomey-technologies/rustis

0.10.0

14 Mar 00:07
Compare
Choose a tag to compare

BRRAKING CHANGE: Refactored CommandArgs

  • IntoArgs trait has been renamed to ToArgs and does not consume the rust input type anymore (takes a reference instead)
  • CommandArgs is now a buffer where args are serialized on the fly. CommandArg type has been removed.
  • internal CommandEncoder has been optimized in consequence

0.9.0

08 Mar 00:11
Compare
Choose a tag to compare
  • BREAKING CHANGE on Client mutability:
    • Client does not require to be mutable to send commands.
    • This change simplifies a lot integration to Web frameworks (like actix-web or axum).
  • Pipeline & Transaction do not clone anymore a Client instance but hold a Client reference instead.
  • Added actix-crud and axum-crud examples.

0.8.3

16 Feb 21:02
Compare
Choose a tag to compare
  • Fix RespSerializer & implemented unit tests
  • Optimized RespDeserializer

0.8.2

11 Feb 06:55
Compare
Choose a tag to compare
  • Optimizations
    • Reduce allocations in BufferDecoder
    • Use atoi crate to avoid UTF8 conversion before parsing to integers

0.8.1

08 Feb 17:51
dbd7859
Compare
Choose a tag to compare
  • integrated serde
    • serde Deserializers implementation over a RESP buffer (byte slice) & a resp::Value reference
    • Direct conversion between a RESP buffer and a target Rust type without using an intermediate resp::Value instance. The main benefit is to trigger less allocations
    • Removed trait resp::FromValue. resp::Value::into is now based on serde.
    • Introduced traits Response, PrimitiveResponse, CollectionResponse & KeyValueCollectionResponse in replacement of FromValue, FromSingleValue, FromValueArray, FromKeyValueArray. The are marker traits to give flexibility and control in built-in commands implementation
    • Introduced RespBuf struct to represent a RESP Buffer based on a Bytes struct with helper methods
  • Simplified PubSub message parsing

0.7.2

05 Jan 21:41
Compare
Choose a tag to compare
  • improved & simplified RESP3 parser
  • optimizations (more inlining)

0.7.1

30 Dec 16:36
Compare
Choose a tag to compare
  • added more constraint on FromKeyValueArray
    • K must implement FromSingleValue instead of FromValue
  • improved documentation
    • grammatical fixes
    • type fixes
    • better formatting

0.7.0

29 Dec 17:28
Compare
Choose a tag to compare
  • Made GraphCache shared between Client clones (optimization)
  • Switched all communications to RESP3
    • introduced Value::Set
    • introduced Value::Map
  • Implemented command retries on network error:
    • added config max_command_attempts
    • added config retry_on_error
    • added retry_on_error flag on Client/Pipeline/Transaction for each command/batch of commands

0.6.0

11 Dec 23:05
Compare
Choose a tag to compare
  • merged Client and MultiplexedClient
    • more flexibility to users
    • more simplicity in rustis architecture
  • exposed get_client_state on Client
  • added Client::close to graciously close a client instance
  • Added Client::on_reconnect
    • allow callers to receive notifications when the clients reconnects to the Redis server
  • Added Config options:
    • connect_timeout - The time to attempt a connection before timing out (default 10,000ms).
    • command_timeout - If a command does not return a reply within a set number of milliseconds,
      a timeout error will be thrown. If set to 0, no timeout is apply (default 0).
    • auto_resubscribe - When the client reconnects, channels subscribed in the previous connection will be
      resubscribed automatically if auto_resubscribe is true (default true).
    • auto_remonitor - When the client reconnects, if in monitor mode, the
      monitor command will be resent automatically
    • connection_name - Set the name of the connection to make
      it easier to identity the connection in client list.
    • no_delay - Enable/disable the use of Nagle's algorithm (default true)
    • keep_alive - Enable/disable keep-alive functionality (default None)
  • removed struct BulkString
    • removed u8 impl for IntoArgs & FromValue
    • added Vec<u8>, &[u8], &[u8; N], [u8; N] impl for IntoArgs
    • added Vec<u8> impl for FromValue

0.5.0

05 Dec 18:10
Compare
Choose a tag to compare
  • Pub/Sub improvements:
      • replaced PubSubStream streamed Value by a more typed Rust struct: PubSubMessage
      • added associate functions subscribe, psubscribe, ssubscribe to PubSubStream to be able to add additional subscriptions to an existing stream