Expand description
§Armature Redis
Redis client integration with connection pooling and dependency injection.
§Features
- Connection Pooling: Efficient connection management with bb8
- Pub/Sub: Redis pub/sub messaging
- Cluster Support: Redis Cluster integration
- DI Integration: Register Redis in your application’s DI container
§Quick Start
ⓘ
use armature_redis::{RedisService, RedisConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Configure Redis
let config = RedisConfig::builder()
.url("redis://localhost:6379")
.pool_size(10)
.build();
// Create service (DI-ready)
let redis = RedisService::new(config).await?;
// Get a connection from the pool
let mut conn = redis.get().await?;
// Use Redis commands
redis::cmd("SET")
.arg("key")
.arg("value")
.query_async(&mut *conn)
.await?;
Ok(())
}§With Dependency Injection
ⓘ
use armature::prelude::*;
use armature_redis::{RedisService, RedisConfig};
#[module]
struct RedisModule;
#[module_impl]
impl RedisModule {
#[provider(singleton)]
async fn redis_service() -> Arc<RedisService> {
let config = RedisConfig::from_env().build();
Arc::new(RedisService::new(config).await.unwrap())
}
}
// In other crates that need Redis:
#[controller("/data")]
struct DataController;
#[controller_impl]
impl DataController {
#[get("/:key")]
async fn get_data(
&self,
#[inject] redis: Arc<RedisService>,
key: Path<String>,
) -> Result<Json<Value>, HttpError> {
let mut conn = redis.get().await?;
let value: Option<String> = redis::cmd("GET")
.arg(&*key)
.query_async(&mut *conn)
.await?;
Ok(Json(json!({ "value": value })))
}
}Re-exports§
pub use redis;
Modules§
- prelude
- Prelude for common imports.
Structs§
- Message
- A Redis Pub/Sub message.
- PubSub
- Redis Pub/Sub client.
- Redis
Config - Redis configuration.
- Redis
Config Builder - Builder for Redis configuration.
- Redis
Connection - A pooled Redis connection.
- Redis
Service - Redis service providing connection pool and convenience methods.
- Subscription
- A subscription handle.
Enums§
- Redis
Error - Redis errors.
- Value
- Internal low-level redis value enum.
Traits§
- Async
Commands - Implements common redis commands over asynchronous connections.
- Commands
- Implements common redis commands for connection like objects.
Type Aliases§
- Redis
Pool - Type alias for the connection pool.
- Redis
Result - Library generic result type.
- Result
- Result type for Redis operations.