Crate armature_redis

Crate armature_redis 

Source
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.
RedisConfig
Redis configuration.
RedisConfigBuilder
Builder for Redis configuration.
RedisConnection
A pooled Redis connection.
RedisService
Redis service providing connection pool and convenience methods.
Subscription
A subscription handle.

Enums§

RedisError
Redis errors.
Value
Internal low-level redis value enum.

Traits§

AsyncCommands
Implements common redis commands over asynchronous connections.
Commands
Implements common redis commands for connection like objects.

Type Aliases§

RedisPool
Type alias for the connection pool.
RedisResult
Library generic result type.
Result
Result type for Redis operations.