| name | redis-cli |
| description | Redis command-line interface (redis-cli) reference and usage guide. Use this skill whenever the user mentions redis-cli, Redis CLI, or any task involving querying, inspecting, debugging, or managing Redis from the command line. Triggers on key/value reads and writes, SCAN or keyspace inspection, INFO or MONITOR troubleshooting, latency and bigkeys analysis, Pub/Sub, Lua scripts, ACL and client management, cluster operations, import/export, and Redis module workflows such as RediSearch, RedisJSON, Bloom/CF/TopK, vector search, and time series commands. Use even if the user does not explicitly say "redis-cli" when the work is clearly terminal-based Redis operations.
|
| metadata | {"author":"chaunsin","version":"0.1"} |
redis-cli — Redis Command Line Interface
redis-cli is the primary command-line tool for interacting with Redis. It supports two modes: command-line execution (run a command and exit) and interactive mode (a REPL with tab completion, history, and hints). It also provides special modes for monitoring, latency analysis, key space scanning, and data import/export.
Official resources: Redis CLI Docs | Commands | Download
Prerequisites
redis-cli --version
brew install redis
sudo apt install redis-tools
sudo yum install redis
apk add redis
make redis-cli
docker run -it --rm redis redis-cli -h <host> -p <port> PING
Security Considerations
IMPORTANT: Redis provides powerful operations that can irreversibly modify or delete data.
Pay close attention to the following safety guidelines:
- Never pass passwords via
-a in production — visible in shell history and process listings. Use REDISCLI_AUTH environment variable instead.
KEYS * blocks the server on large databases — always use SCAN in production code.
MONITOR logs all commands including sensitive data — use cautiously, and never for extended periods on production servers.
FLUSHALL / FLUSHDB are irreversible — verify target database with CLIENT LIST or INFO keyspace first.
--rdb transfer during write operations may produce inconsistent snapshots on busy servers.
Quick Reference
Connection
redis-cli
redis-cli -h redis15.localnet.org -p 6390 PING
redis-cli -a myUnguessablePazzzzzword123 PING
redis-cli -u redis://user:password@host:port/dbnum PING
redis-cli --tls --cacert /path/to/ca.crt -h redis.example.com PING
redis-cli -n 2 DBSIZE
redis-cli -4 PING
redis-cli -6 PING
Command-Line vs Interactive Mode
redis-cli INCR mycounter
redis-cli GET mykey
redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SELECT 2
OK
127.0.0.1:6379[2]> DBSIZE
(integer) 1
The prompt shows host:port[db]. Use CONNECT <host> <port> to switch instances interactively.
Data Query Cheat Sheet
String operations (O(1)):
GET key # Get value
SET key value [NX|XX] [EX sec|PX ms|KEEPTTL] # Set with conditions/TTL
SET key value GET # Set new, return old value
GETSET key newvalue # [Use SET key value GET instead]
MGET key1 key2 ... # Get multiple values
INCR key # Increment integer (+1)
INCRBY key 10 # Increment by amount
STRLEN key # String length
GETRANGE key 0 50 # Substring
Hash operations:
HGET key field # Get field value O(1)
HMGET key f1 f2 # Get multiple fields O(N)
HGETALL key # Get all fields/values O(N)
HKEYS key # Get all field names O(N)
HLEN key # Number of fields O(1)
HEXISTS key field # Check field exists O(1)
HSCAN key 0 [MATCH pat] # Iterate hash fields O(1) per call
List operations:
LRANGE key 0 -1 # Get all elements O(N)
LLEN key # List length O(1)
LINDEX key 0 # Get by index O(N)
LPOS key value # Find element position O(N)
Set operations:
SMEMBERS key # Get all members O(N)
SCARD key # Set cardinality O(1)
SISMEMBER key member # Check membership O(1)
SMISMEMBER key m1 m2 # Multi-membership check O(N)
SSCAN key 0 [MATCH pat] # Iterate set members O(1) per call
Sorted Set operations:
ZRANGE key 0 -1 [WITHSCORES] # By index O(log(N)+M)
ZRANGE key -inf +inf BYSCORE # By score range O(log(N)+M)
ZRANGE key [a [z BYLEX # By lexicographic O(log(N)+M)
ZCARD key # Member count O(1)
ZSCORE key member # Get score O(1)
ZRANK key member # Get rank O(log(N))
ZSCAN key 0 [MATCH pat] # Iterate members O(1) per call
Key inspection:
EXISTS key [key ...] # Check existence (O(N) for multi) — returns count
TYPE key # Data type: string|list|set|zset|hash|stream O(1)
TTL key # Seconds until expiry (-1=none, -2=not exists) O(1)
PTTL key # Milliseconds until expiry O(1)
MEMORY USAGE key [SAMPLES n] # Memory consumption in bytes O(N)
OBJECT ENCODING key # Internal encoding (ziplist, hashtable, etc.) O(1)
OBJECT IDLETIME key # Seconds since last access O(1)
DBSIZE # Total keys in current database O(1)
RANDOMKEY # Return a random key O(1)
Key Scanning (Production-Safe)
SCAN-based iteration never blocks the server, unlike KEYS * which should be avoided in production.
redis-cli --scan
redis-cli --scan --pattern 'user:*'
redis-cli --scan --pattern '*:12345*'
redis-cli --scan --count 100
SCAN 0 MATCH user:* COUNT 100
redis-cli --scan --pattern 'session:*' | wc -l
SCAN guarantees: a full iteration (cursor 0 → cursor 0) always returns all elements that existed for the entire duration. Elements may appear multiple times — handle duplicates in your application.
Server Inspection
redis-cli --stat
redis-cli INFO server
redis-cli INFO memory
redis-cli INFO keyspace
redis-cli INFO replication
redis-cli INFO all
redis-cli --bigkeys
redis-cli --memkeys
redis-cli --keystats
redis-cli --latency
redis-cli --latency-history
redis-cli --latency-dist
redis-cli --intrinsic-latency 5
Output Control
redis-cli --raw GET mykey
redis-cli GET mykey > /tmp/output.txt
redis-cli --no-raw GET mykey | cat
redis-cli --csv LRANGE mylist 0 -1
redis-cli --json HGETALL user:1
cat /etc/services | redis-cli -x SET net_services
cat /tmp/commands.txt | redis-cli
Repeat Commands
redis-cli -r 5 INCR counter
redis-cli -r -1 -i 1 INFO | grep rss_human
5 INCR mycounter
Server Administration
redis-cli ACL LIST
redis-cli ACL SETUSER admin on >pwd ~* +@all
redis-cli ACL SETUSER readonly on >pwd ~* +@read
redis-cli ACL DELUSER username
redis-cli ACL DRYRUN username GET key
redis-cli ACL GENPASS
redis-cli CLIENT LIST
redis-cli CLIENT KILL ADDR ip:port
redis-cli CLIENT PAUSE 5000 WRITE
redis-cli CLIENT SETNAME my-app
redis-cli CONFIG GET maxmemory
redis-cli CONFIG SET maxmemory 100mb
redis-cli CONFIG REWRITE
redis-cli CONFIG RESETSTAT
redis-cli WAIT 2 5000
redis-cli WAITAOF 1 1 5000
redis-cli BGSAVE
redis-cli BGREWRITEAOF
redis-cli LASTSAVE
redis-cli REPLICAOF host port
redis-cli REPLICAOF NO ONE
redis-cli SHUTDOWN SAVE
redis-cli SHUTDOWN NOSAVE
redis-cli SLOWLOG GET 10
redis-cli SLOWLOG LEN
redis-cli SLOWLOG RESET
redis-cli --cluster check host:port
redis-cli --cluster reshard host:port
redis-cli -c -h cluster-node PING
Detailed Reference Files
| File | Content | When to read |
|---|
references/connection-and-options.md | Full connection options, CLI flags, SSL/TLS, environment variables, interactive mode features (completion, history, preferences), RESP protocol versions | Configuring connections, setting up TLS, customizing CLI behavior |
references/data-query-commands.md | Core data type commands: Strings, Hashes, Lists, Sets, Sorted Sets, Streams, Bitmaps, HyperLogLog, Geospatial, plus Key Operations, Database Operations, and Transactions | Looking up core command syntax, understanding command options and return values |
references/module-data-types.md | Module data types: JSON (RedisJSON), Vector Sets (Redis 8.0+), Bloom Filter, Cuckoo Filter, Top-K, Count-Min Sketch, T-Digest, TimeSeries (TS.), Full-Text Search / RediSearch (FT.) — with full command syntax and behavioral notes | Working with Redis module data types, similarity search, probabilistic data structures, time series data, full-text search |
references/key-management.md | SCAN family details (SCAN/SSCAN/HSCAN/ZSCAN), big keys analysis (--bigkeys, --memkeys, --keystats), key expiration (EXPIRE, TTL, PERSIST), key space patterns, mass insertion | Scanning databases, analyzing key distribution, managing key lifecycles |
references/inspection-and-monitoring.md | INFO sections, MONITOR, --stat mode, latency tools (--latency, --latency-history, --latency-dist, --intrinsic-latency), RDB backup, replica mode, LRU simulation | Monitoring Redis instances, debugging performance, creating backups |
references/advanced-features.md | Lua scripting (--eval, --ldb), Pub/Sub mode, pipe mode, CSV/JSON output, string quoting and escaping, get input from stdin, remote RDB transfer, Cluster management (--cluster subcommands, cluster commands) | Running scripts, subscribing to channels, bulk data operations, managing Redis Cluster |
references/server-administration.md | ACL management (ACL SETUSER/DELUSER/LIST/CAT/GENPASS), client management (CLIENT LIST/KILL/PAUSE/TRACKING), configuration (CONFIG GET/SET/REWRITE), replication acknowledgment (WAIT/WAITAOF), persistence (SAVE/BGSAVE/BGREWRITEAOF), replication setup (REPLICAOF), server lifecycle (SHUTDOWN/FAILOVER) | Managing users and permissions, controlling client connections, runtime configuration, ensuring write durability, persistence management, replication setup |
Common Workflows
Explore an Unknown Database
redis-cli INFO keyspace
redis-cli DBSIZE
redis-cli --bigkeys
redis-cli --memkeys
redis-cli --scan | head -20
redis-cli TYPE <key>
redis-cli TTL <key>
redis-cli HGETALL <hash_key>
redis-cli LRANGE <list_key> 0 -1
redis-cli ZRANGE <zset_key> 0 -1 WITHSCORES
Monitor in Real Time
redis-cli --stat -i 2
redis-cli -r -1 -i 5 INFO memory | grep used_memory_human
redis-cli MONITOR
redis-cli --latency-history -i 5
Query Specific Key Patterns
redis-cli --scan --pattern 'session:*' | wc -l
redis-cli --scan --pattern 'user:*' | while read key; do
echo "=== $key ==="
redis-cli HGETALL "$key"
done
redis-cli --scan --pattern 'cache:*' | while read key; do
redis-cli TTL "$key"
done
External References