use redis_enterprise::{CreateDatabaseRequest, EnterpriseClient};
use std::env;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = EnterpriseClient::from_env()?;
println!("Redis Enterprise — disposable database walkthrough");
println!("===================================================\n");
println!("Step 1: cluster status");
match client.cluster().info().await {
Ok(cluster) => println!(" ✓ cluster initialized: {}\n", cluster.name),
Err(e) => {
eprintln!(" ⚠ cluster info failed: {e}");
eprintln!(" → the cluster may need bootstrap; see docs/live-validation.md\n");
return Err(e.into());
}
}
let db_name = "redis-enterprise-example";
let db_port: u16 = 12000;
let db_password = env::var("REDIS_ENTERPRISE_DB_PASSWORD")
.unwrap_or_else(|_| "example-Redis123!".to_string());
println!("Step 2: creating database \"{db_name}\" on port {db_port}");
let request = CreateDatabaseRequest::builder()
.name(db_name)
.memory_size(104_857_600) .port(db_port)
.replication(false)
.persistence("aof")
.eviction_policy("volatile-lru")
.authentication_redis_pass(&db_password)
.build();
let created = client.databases().create(request).await?;
let uid = created.uid;
println!(" ✓ created uid={uid}, status={:?}\n", created.status);
println!("Step 3: waiting for database to become active");
let active = {
let mut info = created;
for _ in 0..15 {
if info.status.as_deref() == Some("active") {
break;
}
tokio::time::sleep(Duration::from_secs(2)).await;
info = client.databases().info(uid).await?;
}
info
};
println!(
" ✓ status={:?}, memory_size={} bytes, port={:?}\n",
active.status,
active.memory_size.unwrap_or(0),
active.port
);
println!("Step 4: listing databases");
for db in client.databases().list().await? {
println!(" - {} (uid {}, port {:?})", db.name, db.uid, db.port);
}
println!();
println!("Step 5: deleting \"{db_name}\"");
client.databases().delete(uid).await?;
println!(" ✓ deleted uid={uid}\n");
println!("Done. While the database existed, you could connect with:");
println!(" redis-cli -p {db_port} -a <password>");
Ok(())
}