Trait redis::JsonAsyncCommands
source · 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 { ... }
}
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§
sourcefn 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_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.
sourcefn 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<'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
sourcefn 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_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
sourcefn 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_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.
sourcefn 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_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
.
sourcefn 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_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).
sourcefn 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_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.
sourcefn 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_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.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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_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
.
sourcefn 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,
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
.