Crate redis_enterprise

Crate redis_enterprise 

Source
Expand description

Redis Enterprise REST API client

This module provides a client for interacting with Redis Enterprise’s REST API, enabling cluster management, database operations, and monitoring.

§Examples

§Creating a Client

use redis_enterprise::EnterpriseClient;

let client = EnterpriseClient::builder()
    .base_url("https://cluster.example.com:9443")
    .username("admin@example.com")
    .password("password")
    .insecure(false)
    .build()?;

§Working with Databases

use redis_enterprise::{EnterpriseClient, BdbHandler, CreateDatabaseRequestBuilder};

// List all databases
let handler = BdbHandler::new(client.clone());
let databases = handler.list().await?;
for db in databases {
    println!("Database: {} ({})", db.name, db.uid);
}

// Create a new database
let request = CreateDatabaseRequestBuilder::new("my-database")
    .memory_size(1024 * 1024 * 1024) // 1GB
    .port(12000)
    .replication(false)
    .persistence("aof")
    .build();

let new_db = handler.create(request).await?;
println!("Created database: {}", new_db.uid);

// Get database stats
let stats = handler.get_stats(new_db.uid).await?;
println!("Ops/sec: {:?}", stats);

§Managing Nodes

use redis_enterprise::{EnterpriseClient, NodeHandler};

let handler = NodeHandler::new(client);

// List all nodes in the cluster
let nodes = handler.list().await?;
for node in nodes {
    println!("Node {}: {} ({})", node.uid, node.addr, node.status);
}

// Get detailed node information
let node_info = handler.get(1).await?;
println!("Node memory: {} / {} bytes",
    node_info.total_memory, node_info.free_memory);

// Check node stats
let stats = handler.get_stats(1).await?;
println!("CPU usage: {:?}", stats);

§Cluster Operations

use redis_enterprise::{EnterpriseClient, ClusterHandler};

let handler = ClusterHandler::new(client);

// Get cluster information
let cluster_info = handler.get().await?;
println!("Cluster name: {}", cluster_info.name);
println!("Nodes: {}", cluster_info.nodes.len());

// Get cluster statistics
let stats = handler.get_stats().await?;
println!("Total memory: {:?}", stats);

// Check license status
let license = handler.get_license().await?;
println!("License expires: {:?}", license);

§User Management

use redis_enterprise::{EnterpriseClient, UserHandler, CreateUserRequest};

let handler = UserHandler::new(client);

// List all users
let users = handler.list().await?;
for user in users {
    println!("User: {} ({})", user.username, user.role);
}

// Create a new user
let request = CreateUserRequest {
    username: "newuser".to_string(),
    password: "secure_password".to_string(),
    role: "db_member".to_string(),
    email: Some("newuser@example.com".to_string()),
    email_alerts: Some(true),
};

let new_user = handler.create(request).await?;
println!("Created user: {}", new_user.uid);

§Monitoring and Alerts

use redis_enterprise::{EnterpriseClient, AlertHandler, StatsHandler};

// Check active alerts
let alert_handler = AlertHandler::new(client.clone());
let alerts = alert_handler.list().await?;
for alert in alerts {
    println!("Alert: {} - {}", alert.alert_type, alert.message);
}

// Get cluster statistics
let stats_handler = StatsHandler::new(client);
let cluster_stats = stats_handler.cluster_stats(None).await?;
println!("Cluster stats: {:?}", cluster_stats);

§Active-Active Databases (CRDB)

use redis_enterprise::{EnterpriseClient, CrdbHandler, CreateCrdbRequest};

let handler = CrdbHandler::new(client);

// List Active-Active databases
let crdbs = handler.list().await?;
for crdb in crdbs {
    println!("CRDB: {} ({})", crdb.name, crdb.guid);
}

// Create an Active-Active database
let request = CreateCrdbRequest {
    name: "global-cache".to_string(),
    memory_size: 1024 * 1024 * 1024, // 1GB per instance
    instances: vec![
        // Define instances for each participating cluster
    ],
};

let new_crdb = handler.create(request).await?;
println!("Created CRDB: {}", new_crdb.guid);

Re-exports§

pub use client::EnterpriseClient;
pub use client::EnterpriseClientBuilder;
pub use error::RestError;
pub use error::Result;
pub use bdb::BdbHandler;
pub use bdb::CreateDatabaseRequest;
pub use bdb::CreateDatabaseRequestBuilder;
pub use bdb::Database;
pub use bdb::ModuleConfig;
pub use cluster::BootstrapRequest;
pub use cluster::ClusterHandler;
pub use cluster::ClusterInfo;
pub use cluster::ClusterNode;
pub use cluster::LicenseInfo;
pub use cluster::NodeInfo;
pub use nodes::Node;
pub use nodes::NodeActionRequest;
pub use nodes::NodeHandler;
pub use nodes::NodeStats;
pub use users::CreateUserRequest;
pub use users::Role;
pub use users::RoleHandler;
pub use users::UpdateUserRequest;
pub use users::User;
pub use users::UserHandler;
pub use modules::Module;
pub use modules::ModuleHandler;
pub use modules::UploadModuleRequest;
pub use actions::Action;
pub use actions::ActionHandler;
pub use logs::LogEntry;
pub use logs::LogsHandler;
pub use logs::LogsQuery;
pub use crdb::Crdb;
pub use crdb::CrdbHandler;
pub use crdb::CrdbInstance;
pub use crdb::CreateCrdbInstance;
pub use crdb::CreateCrdbRequest;
pub use stats::StatsHandler;
pub use stats::StatsInterval;
pub use stats::StatsQuery;
pub use stats::StatsResponse;
pub use alerts::Alert;
pub use alerts::AlertHandler;
pub use alerts::AlertSettings;
pub use redis_acls::CreateRedisAclRequest;
pub use redis_acls::RedisAcl;
pub use redis_acls::RedisAclHandler;
pub use shards::Shard;
pub use shards::ShardHandler;
pub use shards::ShardStats;
pub use proxies::Proxy;
pub use proxies::ProxyHandler;
pub use proxies::ProxyStats;
pub use ldap_mappings::CreateLdapMappingRequest;
pub use ldap_mappings::LdapConfig;
pub use ldap_mappings::LdapMapping;
pub use ldap_mappings::LdapMappingHandler;
pub use ldap_mappings::LdapServer;
pub use ocsp::OcspConfig;
pub use ocsp::OcspHandler;
pub use ocsp::OcspStatus;
pub use ocsp::OcspTestResult;
pub use bootstrap::BootstrapConfig;
pub use bootstrap::BootstrapHandler;
pub use bootstrap::BootstrapStatus;
pub use bootstrap::ClusterBootstrap;
pub use bootstrap::CredentialsBootstrap;
pub use bootstrap::NodeBootstrap;
pub use bootstrap::NodePaths;
pub use cm_settings::CmSettings;
pub use cm_settings::CmSettingsHandler;
pub use crdb_tasks::CrdbTask;
pub use crdb_tasks::CrdbTasksHandler;
pub use crdb_tasks::CreateCrdbTaskRequest;
pub use debuginfo::DebugInfoHandler;
pub use debuginfo::DebugInfoRequest;
pub use debuginfo::DebugInfoStatus;
pub use debuginfo::TimeRange;
pub use diagnostics::DiagnosticReport;
pub use diagnostics::DiagnosticRequest;
pub use diagnostics::DiagnosticResult;
pub use diagnostics::DiagnosticSummary;
pub use diagnostics::DiagnosticsHandler;
pub use endpoints::Endpoint;
pub use endpoints::EndpointStats;
pub use endpoints::EndpointsHandler;
pub use job_scheduler::CreateScheduledJobRequest;
pub use job_scheduler::JobExecution;
pub use job_scheduler::JobSchedulerHandler;
pub use job_scheduler::ScheduledJob;
pub use jsonschema::JsonSchemaHandler;
pub use license::License;
pub use license::LicenseHandler;
pub use license::LicenseUpdateRequest;
pub use license::LicenseUsage;
pub use migrations::CreateMigrationRequest;
pub use migrations::Migration;
pub use migrations::MigrationEndpoint;
pub use migrations::MigrationsHandler;
pub use roles::BdbRole;
pub use roles::CreateRoleRequest;
pub use roles::RoleInfo;
pub use roles::RolesHandler;
pub use services::NodeServiceStatus;
pub use services::Service;
pub use services::ServiceConfigRequest;
pub use services::ServiceStatus;
pub use services::ServicesHandler;
pub use suffixes::CreateSuffixRequest;
pub use suffixes::Suffix;
pub use suffixes::SuffixesHandler;
pub use usage_report::DatabaseUsage;
pub use usage_report::NodeUsage;
pub use usage_report::UsageReport;
pub use usage_report::UsageReportConfig;
pub use usage_report::UsageReportHandler;
pub use usage_report::UsageSummary;

Modules§

actions
Action management for Redis Enterprise async operations
alerts
Alert management for Redis Enterprise
bdb
Database (BDB) management commands for Redis Enterprise
bootstrap
Bootstrap operations for Redis Enterprise cluster initialization
client
REST API client implementation
cluster
Cluster management commands for Redis Enterprise
cm_settings
Cluster Manager settings for Redis Enterprise
crdb
Active-Active Database (CRDB) management for Redis Enterprise
crdb_tasks
Active-Active (CRDB) task management for Redis Enterprise
debuginfo
Debug information collection for Redis Enterprise
diagnostics
Diagnostic operations for Redis Enterprise
endpoints
Endpoint management and statistics for Redis Enterprise
error
Error types for REST API operations
job_scheduler
Job scheduler management for Redis Enterprise
jsonschema
JSON Schema definitions for Redis Enterprise API
ldap_mappings
LDAP mapping management for Redis Enterprise
license
License management for Redis Enterprise
logs
Event log management for Redis Enterprise
migrations
Data migration operations for Redis Enterprise
modules
Redis module management for Redis Enterprise
nodes
Node management for Redis Enterprise
ocsp
OCSP (Online Certificate Status Protocol) management for Redis Enterprise
proxies
Proxy management for Redis Enterprise
redis_acls
Redis Access Control List (ACL) management for Redis Enterprise
roles
Role management for Redis Enterprise
services
Service configuration for Redis Enterprise
shards
Shard management for Redis Enterprise
stats
Statistics and metrics for Redis Enterprise
suffixes
DNS suffix management for Redis Enterprise
types
Specialized types for Redis Enterprise API objects
usage_report
Usage reporting for Redis Enterprise
users
User and role management for Redis Enterprise