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, CreateDatabaseRequest};
// 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 = CreateDatabaseRequest::builder()
.name("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.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);
// Check node stats
let stats = handler.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.info().await?;
println!("Cluster name: {}", cluster_info.name);
println!("Nodes: {:?}", cluster_info.nodes);
// Get cluster statistics
let stats = handler.stats().await?;
println!("Total memory: {:?}", stats);
// Check license status
let license = handler.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.name, alert.severity);
}
// Get cluster statistics
let stats_handler = StatsHandler::new(client);
let cluster_stats = stats_handler.cluster(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
],
encryption: Some(false),
data_persistence: Some("aof".to_string()),
eviction_policy: Some("allkeys-lru".to_string()),
};
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::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