Skip to content

Latest commit

 

History

History
214 lines (144 loc) · 7.07 KB

CHANGELOG.md

File metadata and controls

214 lines (144 loc) · 7.07 KB

Changelog

0.11.0 - 2019-07-19

This release includes all fixes & improvements from the two beta releases listed below. This release contains breaking changes.

Fixes and improvements

  • (async) Fix performance problem for SharedConnection (#222)

0.11.0-beta.2 - 2019-07-14

Fixes and improvements

  • (async) Don't block the executor from shutting down (#217)

0.11.0-beta.1 - 2019-05-30

Fixes and improvements

  • (async) Simplify implicit pipeline handling (#182)
  • (async) Use tokio_sync's channels instead of futures (#195)
  • (async) Only allocate one oneshot per request (#194)
  • Remove redundant BufReader when parsing (#197)
  • Hide actual type returned from async parser (#193)
  • Use more performant operations for line parsing (#198)
  • Optimize the command encoding, see below for breaking changes (#165)
  • Add support for geospatial commands (#130)
  • (async) Add support for async Script invocation (#206)

BREAKING CHANGES

Renamed the async module to aio (#189)

async is a reserved keyword in Rust 2018, so this avoids the need to write r#async in it.

Old code:

use redis::async::SharedConnection;

New code:

use redis::aio::SharedConnection;

The trait ToRedisArgs was changed (#165)

ToRedisArgs has been changed to take take an instance of RedisWrite instead of Vec<Vec<u8>>. Use the write_arg method instead of Vec::push.

Minimum Rust version is now 1.26 (#165)

Upgrade your compiler. impl Iterator is used, requiring a more recent version of the Rust compiler.

iter now takes self by value (#165)

iter now takes self by value instead of cloning self inside the method.

Old code:

let mut iter : redis::Iter<isize> = cmd.arg("my_set").cursor_arg(0).iter(&con).unwrap();

New code:

let mut iter : redis::Iter<isize> = cmd.arg("my_set").cursor_arg(0).clone().iter(&con).unwrap();

(The above line calls clone().)

A mutable connection object is now required (#148)

We removed the internal usage of RefCell and Cell and instead require a mutable reference, &mut ConnectionLike, on all command calls.

Old code:

let client = redis::Client::open("redis://127.0.0.1/")?;
let con = client.get_connection()?;
redis::cmd("SET").arg("my_key").arg(42).execute(&con);

New code:

let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_connection()?;
redis::cmd("SET").arg("my_key").arg(42).execute(&mut con);

Due to this, transaction has changed. The callback now also receives a mutable reference to the used connection.

Old code:

let client = redis::Client::open("redis://127.0.0.1/").unwrap();
let con = client.get_connection().unwrap();
let key = "the_key";
let (new_val,) : (isize,) = redis::transaction(&con, &[key], |pipe| {
    let old_val : isize = con.get(key)?;
    pipe
        .set(key, old_val + 1).ignore()
        .get(key).query(&con)
})?;

New code:

let client = redis::Client::open("redis://127.0.0.1/").unwrap();
let mut con = client.get_connection().unwrap();
let key = "the_key";
let (new_val,) : (isize,) = redis::transaction(&mut con, &[key], |con, pipe| {
    let old_val : isize = con.get(key)?;
    pipe
        .set(key, old_val + 1).ignore()
        .get(key).query(&con)
})?;

Remove rustc-serialize feature (#200)

We removed serialization to/from JSON. The underlying library is deprecated for a long time.

Old code in Cargo.toml:

[dependencies.redis]
version = "0.9.1"
features = ["with-rustc-json"]

There's no replacement for the feature. Use serde and handle the serialization/deserialization in your own code.

Remove with-unix-sockets feature (#201)

We removed the Unix socket feature. It is now always enabled. We also removed auto-detection.

Old code in Cargo.toml:

[dependencies.redis]
version = "0.9.1"
features = ["with-unix-sockets"]

There's no replacement for the feature. Unix sockets will continue to work by default.

0.10.0 - 2019-02-19

  • Fix handling of passwords with special characters (#163)
  • Better performance for async code due to less boxing (#167)
    • CAUTION: redis-rs will now require Rust 1.26
  • Add clear method to the pipeline (#176)
  • Better benchmarking (#179)
  • Fully formatted source code (#181)

0.9.1 (2018-09-10)

  • Add ttl command

0.9.0 (2018-08-08)

Some time has passed since the last release. This new release will bring less bugs, more commands, experimental async support and better performance.

Highlights:

  • Implement flexible PubSub API (#136)
  • Avoid allocating some redundant Vec's during encoding (#140)
  • Add an async interface using futures-rs (#141)
  • Allow the async connection to have multiple in flight requests (#143)

The async support is currently experimental.

0.8.0 (2016-12-26)

  • Add publish command

0.7.1 (2016-12-17)

  • Fix unix socket builds
  • Relax lifetimes for scripts

0.7.0 (2016-07-23)

  • Add support for built-in unix sockets

0.6.0 (2016-07-14)

  • feat: Make rustc-serialize an optional feature (#96)

0.5.4 (2016-06-25)

  • fix: Improved single arg handling (#95)
  • feat: Implement ToRedisArgs for &String (#89)
  • feat: Faster command encoding (#94)

0.5.3 (2016-05-03)

  • fix: Use explicit versions for dependencies
  • fix: Send AUTH command before other commands
  • fix: Shutdown connection upon protocol error
  • feat: Add keys method
  • feat: Possibility to set read and write timeouts for the connection