Skip to content

Commit 7cce8d6

Browse files
committed
docs: add rladmin vs redisctl comparison to documentation
- Create new Comparison section in docs - Add comprehensive rladmin vs redisctl feature comparison - Include practical examples and use cases - Show that tools are complementary, not competing - Link to planned enhancement issues (#417-420) Closes #423
1 parent 58e6a6a commit 7cce8d6

File tree

2 files changed

+235
-0
lines changed

2 files changed

+235
-0
lines changed

docs/src/SUMMARY.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@
114114
- [Raw API Access](./common-features/raw-api.md)
115115
- [Secure Storage](./common-features/secure-storage.md)
116116

117+
# Comparison
118+
119+
- [rladmin vs redisctl](./comparison/rladmin.md)
120+
117121
# Tutorials
118122

119123
- [CI/CD Integration](./tutorials/cicd.md)

docs/src/comparison/rladmin.md

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
# rladmin vs redisctl
2+
3+
This guide helps you understand when to use **rladmin** (Redis Enterprise's built-in CLI) versus **redisctl**.
4+
5+
## Quick Summary
6+
7+
| Aspect | rladmin | redisctl |
8+
|--------|---------|----------|
9+
| **Access** | Node-local (SSH required) | Remote REST API |
10+
| **Installation** | Pre-installed on nodes | Single binary |
11+
| **Platform** | Linux (nodes only) | macOS, Linux, Windows |
12+
| **Output** | Text tables | JSON, YAML, Table |
13+
| **Best For** | Low-level ops, troubleshooting | Automation, DevOps, CI/CD |
14+
15+
## When to Use Each Tool
16+
17+
### Use rladmin for:
18+
- Low-level node operations (maintenance mode, snapshots)
19+
- Direct shard and endpoint management
20+
- Emergency troubleshooting when API is down
21+
- Interactive exploration (tab completion)
22+
- Operations not exposed via REST API
23+
24+
### Use redisctl for:
25+
- Remote cluster management from your laptop
26+
- CI/CD pipeline automation
27+
- Multi-cluster management via profiles
28+
- Structured output (JSON/YAML) for scripts
29+
- Support package generation and upload
30+
- Day-to-day database operations
31+
32+
## Key Architecture Differences
33+
34+
| Aspect | rladmin | redisctl |
35+
|--------|---------|----------|
36+
| **Access Method** | Node-local (SSH required) | Remote REST API |
37+
| **Installation** | Pre-installed on cluster nodes | Single binary, any platform |
38+
| **Network** | No network needed | Requires HTTPS to cluster |
39+
| **Authentication** | Node access = implicit auth | API credentials required |
40+
| **Output** | Text only (parsable) | JSON, YAML, Table |
41+
| **Mode** | Interactive + CLI | CLI only |
42+
43+
## Feature Comparison by Category
44+
45+
### Cluster Management
46+
47+
| Feature | rladmin | redisctl |
48+
|---------|---------|----------|
49+
| Cluster creation |`cluster create` |`workflow init-cluster` |
50+
| Cluster info |`info cluster` |`cluster get` |
51+
| Cluster status |`status` |`cluster get` + `stats` |
52+
| License management |`cluster license` |`license set/get` |
53+
| Debug info |`cluster debug_info` |`support-package cluster` |
54+
55+
### Database Operations
56+
57+
| Feature | rladmin | redisctl |
58+
|---------|---------|----------|
59+
| List databases |`status` |`database list` |
60+
| Create database |`bdb create` |`database create` |
61+
| Update database |`bdb update` |`database update` |
62+
| Delete database |`bdb delete` |`database delete` |
63+
| Database stats | ⚠️ Via `status` |`database stats` |
64+
| Restart database |`restart db` | ❌ Not exposed |
65+
| Upgrade database |`upgrade db` | ❌ Not exposed |
66+
67+
### Node Operations
68+
69+
| Feature | rladmin | redisctl |
70+
|---------|---------|----------|
71+
| List nodes |`status` |`node list` |
72+
| Node info |`info node` |`node get` |
73+
| Maintenance mode |`node maintenance_mode` | ❌ Not exposed |
74+
| Node snapshots |`node snapshot` | ❌ Not exposed |
75+
76+
### Output & Automation
77+
78+
| Feature | rladmin | redisctl |
79+
|---------|---------|----------|
80+
| JSON output | ❌ Text only | ✅ Native JSON |
81+
| YAML output | ❌ Text only | ✅ Native YAML |
82+
| JMESPath queries | ❌ Not supported | ✅ Built-in `-q` flag |
83+
| Progress indicators | ❌ No feedback | ✅ Spinners with `--wait` |
84+
| Interactive mode | ✅ Tab completion | ❌ CLI only |
85+
86+
**Legend:**
87+
- ✅ Full support
88+
- ⚠️ Partial support
89+
- ❌ Not supported
90+
91+
## Example Comparisons
92+
93+
### Task: Get Database Memory Size
94+
95+
**rladmin approach:**
96+
```bash
97+
# SSH to cluster node
98+
ssh admin@cluster-node
99+
100+
# Get database info (text output)
101+
rladmin info db db:1
102+
103+
# Parse with grep/awk
104+
rladmin info db db:1 | grep memory_size | awk '{print $2}'
105+
```
106+
107+
**redisctl approach:**
108+
```bash
109+
# From your laptop (no SSH needed)
110+
redisctl enterprise database get 1 -o json -q 'memory_size'
111+
```
112+
113+
### Task: Generate Support Package
114+
115+
**rladmin approach:**
116+
```bash
117+
# 1. SSH to cluster node
118+
ssh admin@cluster-node
119+
120+
# 2. Generate debug info
121+
rladmin cluster debug_info
122+
123+
# 3. Find the file
124+
ls -ltr /tmp/*.tar.gz | tail -1
125+
126+
# 4. SCP to local machine
127+
scp admin@cluster-node:/tmp/debuginfo-*.tar.gz ./
128+
129+
# 5. Upload to Redis Support via web UI (10+ minutes)
130+
```
131+
132+
**redisctl approach:**
133+
```bash
134+
# One command from your laptop
135+
redisctl enterprise support-package cluster --optimize --upload
136+
137+
# Done in 30 seconds
138+
```
139+
140+
### Task: Interactive Exploration
141+
142+
**rladmin approach:**
143+
```bash
144+
# SSH to node
145+
ssh admin@cluster-node
146+
147+
# Start interactive mode with tab completion
148+
rladmin
149+
150+
rladmin> status <TAB>
151+
rladmin> info cluster <TAB>
152+
```
153+
154+
**redisctl approach:**
155+
```bash
156+
# No interactive mode (yet), but rich output
157+
redisctl enterprise cluster get -o table
158+
redisctl enterprise database list -o json | jq
159+
```
160+
161+
## Why They're Complementary
162+
163+
### rladmin: Node-Local Power Tool
164+
- Designed for direct cluster node operations
165+
- Provides low-level control (shards, endpoints, nodes)
166+
- Interactive mode with tab completion
167+
- Essential for emergency troubleshooting
168+
- No network dependency
169+
170+
### redisctl: Remote DevOps Platform
171+
- Designed for remote management and automation
172+
- REST API based (works from anywhere)
173+
- Structured output (JSON/YAML) for CI/CD
174+
- Cross-platform (macOS, Windows, Linux)
175+
- Multi-cluster profile management
176+
- Modern DevOps workflows
177+
178+
## Best Practice
179+
180+
Use both tools together:
181+
182+
- **Primary tool: redisctl** for day-to-day operations, automation, CI/CD
183+
- **Secondary tool: rladmin** for emergencies, low-level ops, troubleshooting
184+
185+
## API Coverage Gap
186+
187+
The REST API does not expose all operations that rladmin provides:
188+
189+
- Node-level operations (maintenance mode, snapshots, recovery paths)
190+
- Direct shard failover and migration
191+
- Endpoint binding configuration
192+
- DNS suffix management
193+
- Cluster verification tools
194+
- Database restart/upgrade/recover commands
195+
196+
This is by design - these are low-level operations typically performed on-node, not remotely.
197+
198+
## Community Insights
199+
200+
Based on Stack Overflow and documentation research:
201+
202+
**rladmin strengths:**
203+
- Tab completion makes it discoverable
204+
- Comprehensive low-level operations
205+
- Works when API is broken
206+
- Fast for on-node troubleshooting
207+
208+
**Pain points:**
209+
- Requires SSH access to nodes
210+
- Text output requires parsing for automation
211+
- No cross-platform support (Linux nodes only)
212+
213+
## Planned Features
214+
215+
We're adding rladmin-inspired features to redisctl:
216+
217+
- Interactive mode with tab completion ([#417](https://github.com/joshrotenberg/redisctl/issues/417))
218+
- Cluster balance verification ([#418](https://github.com/joshrotenberg/redisctl/issues/418))
219+
- Rack-aware verification ([#419](https://github.com/joshrotenberg/redisctl/issues/419))
220+
- Comprehensive status command ([#420](https://github.com/joshrotenberg/redisctl/issues/420))
221+
222+
See [issue #416](https://github.com/joshrotenberg/redisctl/issues/416) for the full list.
223+
224+
## Conclusion
225+
226+
**rladmin and redisctl are complementary tools, not competitors.** They serve different purposes:
227+
228+
- Use **redisctl** for remote management, automation, and modern DevOps workflows
229+
- Use **rladmin** for low-level operations, emergency troubleshooting, and on-node tasks
230+
231+
The best practice is to use both, letting each tool do what it does best.

0 commit comments

Comments
 (0)