Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Redis Cloud Examples

Real-world examples of managing Redis Cloud resources.

Database Lifecycle

Create a Production Database

# 1. List available subscriptions
redisctl cloud subscription list -o table

# 2. Create the database
redisctl api cloud post /subscriptions/12345/databases \
  --data '{
    "name": "production-cache",
    "memoryLimitInGb": 5,
    "throughputMeasurement": {
      "by": "operations-per-second",
      "value": 10000
    },
    "modules": ["RedisJSON", "RediSearch"],
    "replication": true,
    "dataPersistence": "aof-every-1-second",
    "alerts": [
      {
        "name": "high-memory",
        "value": 80
      }
    ]
  }'

# 3. Check creation status
redisctl api cloud get /tasks/<task-id>

# 4. Get connection details
redisctl cloud database get \
  --subscription-id 12345 \
  --database-id 67890 \
  -q '{endpoint: publicEndpoint, password: password}'

Backup and Restore

# Create manual backup
redisctl cloud backup create \
  --subscription-id 12345 \
  --database-id 67890

# List available backups
redisctl cloud backup list \
  --subscription-id 12345 \
  --database-id 67890 \
  -o table

# Restore from backup
redisctl cloud backup restore \
  --subscription-id 12345 \
  --database-id 67890 \
  --backup-id <backup-id>

User Management

Set Up Team Access

# Create team members
redisctl cloud user create \
  --email "dev@company.com" \
  --role "db-member"

redisctl cloud user create \
  --email "ops@company.com" \
  --role "db-viewer"

# List all users
redisctl cloud user list -q "[].{email:email,role:role}" -o table

# Update user role
redisctl cloud user update <user-id> --role "admin"

Monitoring and Metrics

Get Database Metrics

# Get current stats
redisctl api cloud get /subscriptions/12345/databases/67890/metrics \
  -q '{
    cpu: cpuUsagePercentage,
    memory: memoryUsagePercentage,
    connections: connectionsCount,
    ops: operationsPerSecond
  }'

# Monitor database status
watch -n 5 'redisctl cloud database get \
  --subscription-id 12345 \
  --database-id 67890 \
  -q "{status:status,memory:memoryUsagePercentage}"'

Migration Scenarios

Export Database List

# Export all databases to JSON
redisctl cloud subscription list -q "[].id" | \
while read sub_id; do
  redisctl cloud database list --subscription-id $sub_id
done > all-databases.json

# Create summary report
redisctl cloud subscription list | \
jq -r '.[] | 
  "\(.name): \(.numberOfDatabases) databases, \(.status)"'

Bulk Operations

# Scale all databases in subscription
for db_id in $(redisctl cloud database list --subscription-id 12345 -q "[].id" -r); do
  redisctl cloud database update \
    --subscription-id 12345 \
    --database-id $db_id \
    --memory-limit 2048
done

# Add module to multiple databases
redisctl cloud database list --subscription-id 12345 -q "[].id" | \
while read db_id; do
  redisctl api cloud patch /subscriptions/12345/databases/$db_id \
    --data '{"modules": ["RedisJSON", "RediSearch", "RedisTimeSeries"]}'
done

Cost Management

Analyze Costs

# Get subscription costs
redisctl api cloud get /subscriptions/12345/pricing \
  -q '{
    total: totalPrice,
    databases: databases[].{
      name: name,
      cost: price
    }
  }' -o yaml

# Find most expensive databases
redisctl cloud database list --subscription-id 12345 \
  -q "reverse(sort_by([].{name:name,memory:memoryLimitInGb}, &memory))[:5]" \
  -o table

Security

Set Up ACLs

# Create read-only ACL
redisctl cloud acl create \
  --subscription-id 12345 \
  --name "readonly-access" \
  --rule "+get +mget +exists +scan +xread -flushdb -flushall -keys"

# Create write-limited ACL
redisctl cloud acl create \
  --subscription-id 12345 \
  --name "app-access" \
  --rule "+@all -@dangerous -flushdb -flushall -keys -config"

# Apply ACL to database
redisctl api cloud patch /subscriptions/12345/databases/67890 \
  --data '{"redisAclId": "<acl-id>"}'

Automation Scripts

Health Check Script

#!/bin/bash
# Check all database health

redisctl cloud subscription list -q "[].id" | while read sub_id; do
  echo "Checking subscription $sub_id..."
  
  redisctl cloud database list --subscription-id $sub_id \
    -q "[?status!='active'].{name:name,status:status}" | \
  jq -r '.[] | "  WARNING: \(.name) is \(.status)"'
done

Daily Report

#!/bin/bash
# Generate daily report

echo "Redis Cloud Daily Report - $(date)"
echo "========================"

# Account summary
echo -e "\nAccount:"
redisctl cloud account info -q '{owner:owner,id:id}'

# Subscription summary
echo -e "\nSubscriptions:"
redisctl cloud subscription list \
  -q "[].{name:name,databases:numberOfDatabases,status:status}" \
  -o table

# Database summary
echo -e "\nActive Databases:"
for sub_id in $(redisctl cloud subscription list -q "[].id" -r); do
  redisctl cloud database list --subscription-id $sub_id \
    -q "[?status=='active'] | length(@)"
done | awk '{sum+=$1} END {print sum}'

# Alert summary
echo -e "\nRecent Alerts:"
redisctl api cloud get /logs?type=alert&limit=10 \
  -q "[:5].{time:timestamp,message:message}" \
  -o table