pub trait JsonAsyncCommands: ConnectionLike + Send + Sized {
Show 18 methods // Provided methods fn json_arr_append<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_index<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_index_ss<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V, start: &'a isize, stop: &'a isize ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_insert<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, index: i64, value: &'a V ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_pop<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, index: i64 ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_arr_trim<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, start: i64, stop: i64 ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_clear<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_del<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_get<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_num_incr_by<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: i64 ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_obj_keys<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_obj_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_set<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_str_append<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: V ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_str_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_toggle<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... } fn json_type<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV> where RV: FromRedisValue { ... }
}
Available on crate feature json only.
Expand description

Implements RedisJSON commands over asynchronous connections. This allows you to send commands straight to a connection or client.

This allows you to use nicer syntax for some common operations. For instance this code:

use redis::JsonAsyncCommands;
use serde_json::json;
let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_async_connection().await?;
redis::cmd("JSON.SET").arg("my_key").arg("$").arg(&json!({"item": 42i32}).to_string()).query_async(&mut con).await?;
assert_eq!(redis::cmd("JSON.GET").arg("my_key").arg("$").query_async(&mut con).await, Ok(String::from(r#"[{"item":42}]"#)));

Will become this:

use redis::JsonAsyncCommands;
use serde_json::json;
use redis::Commands;
let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_async_connection().await?;
con.json_set("my_key", "$", &json!({"item": 42i32}).to_string()).await?;
assert_eq!(con.json_get("my_key", "$").await, Ok(String::from(r#"[{"item":42}]"#)));
assert_eq!(con.json_get("my_key", "$.item").await, Ok(String::from(r#"[42]"#)));

With RedisJSON commands, you have to note that all results will be wrapped in square brackets (or empty brackets if not found). If you want to deserialize it with e.g. serde_json you have to use Vec<T> for your output type instead of T.

Provided Methods§

source

fn json_arr_append<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Append the JSON value to the array at path after the last element in it.

source

fn json_arr_index<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Index array at path, returns first occurance of value

source

fn json_arr_index_ss<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V, start: &'a isize, stop: &'a isize ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Same as json_arr_index except takes a start and a stop value, setting these to 0 will mean they make no effect on the query

The default values for start and stop are 0, so pass those in if you want them to take no effect

source

fn json_arr_insert<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, index: i64, value: &'a V ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Inserts the JSON value in the array at path before the index (shifts to the right).

index must be withing the array’s range.

source

fn json_arr_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Reports the length of the JSON Array at path in key.

source

fn json_arr_pop<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, index: i64 ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Removes and returns an element from the index in the array.

index defaults to -1 (the end of the array).

source

fn json_arr_trim<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, start: i64, stop: i64 ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Trims an array so that it contains only the specified inclusive range of elements.

This command is extremely forgiving and using it with out-of-range indexes will not produce an error. There are a few differences between how RedisJSON v2.0 and legacy versions handle out-of-range indexes.

source

fn json_clear<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Clears container values (Arrays/Objects), and sets numeric values to 0.

source

fn json_del<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Deletes a value at path.

source

fn json_get<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Gets JSON Value(s) at path.

Runs JSON.GET if key is singular, JSON.MGET if there are multiple keys.

With RedisJSON commands, you have to note that all results will be wrapped in square brackets (or empty brackets if not found). If you want to deserialize it with e.g. serde_json you have to use Vec<T> for your output type instead of T.

source

fn json_num_incr_by<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: i64 ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Increments the number value stored at path by number.

source

fn json_obj_keys<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Returns the keys in the object that’s referenced by path.

source

fn json_obj_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Reports the number of keys in the JSON Object at path in key.

source

fn json_set<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: Serialize + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: &'a V ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Sets the JSON Value at path in key.

source

fn json_str_append<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, V: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P, value: V ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Appends the json-string values to the string at path.

source

fn json_str_len<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Reports the length of the JSON String at path in key.

source

fn json_toggle<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Toggle a boolean value stored at path.

source

fn json_type<'a, K: ToRedisArgs + Send + Sync + 'a, P: ToRedisArgs + Send + Sync + 'a, RV>( &'a mut self, key: K, path: P ) -> RedisFuture<'a, RV>
where RV: FromRedisValue,

Reports the type of JSON value at path.

Object Safety§

This trait is not object safe.

Implementors§