| Crates.io | spring-redis |
| lib.rs | spring-redis |
| version | 0.4.3 |
| created_at | 2024-08-07 04:45:08.376397+00 |
| updated_at | 2025-07-20 15:14:55.786938+00 |
| description | Integrate redis-rs with spring-rs |
| homepage | |
| repository | https://github.com/spring-rs/spring-rs |
| max_upload_size | |
| id | 1328068 |
| size | 54,915 |
spring-redis = { version = "<version>" }
[redis]
uri = "redis://127.0.0.1/" # redis database address
# The following are all optional configurations
connection_timeout = 10000 # Connection timeout, in milliseconds
response_timeout = 1000 # Response timeout, in milliseconds
number_of_retries = 6 # Retry times, interval time increases exponentially
exponent_base = 2 # Interval time exponential base, unit milliseconds
factor = 100 # Interval time growth factor, default 100 times growth
max_delay = 60000 # Maximum interval time
After configuring the above configuration items, the plugin will automatically register a Redis connection management object. This object is an alias of redis::aio::ConnectionManager.
pub type Redis = redis::aio::ConnectionManager;
The RedisPlugin plugin automatically registers a connection management object for us. We can use Component to extract this connection pool from AppState. Component is an axum extractor.
async fn list_all_redis_key(Component(mut redis): Component<Redis>) -> Result<impl IntoResponse> {
let keys: Vec<String> = redis.keys("*").await.context("redis request failed")?;
Ok(Json(keys))
}
cache macrospring-redis provides a transparent cache for asynchronous functions based on Redis. Add the cache macro to the async method to cache the function result.
The example is as follows:
#[cache("redis-cache:{key}", expire = 60, condition = key.len() > 3)]
async fn cachable_func(key: &str) -> String {
format!("cached value for key: {key}")
}
The cache macro supports three optional parameters: expire, condition, and unless. For details, please refer to the cache document.
The function wrapped by cache must meet the following requirements:
async fnResult<T, E> or a normal value Tserde::Serialize and serde::Deserialize, and the underlying serde_json is used for serializationComplete code reference redis-example