Files
playbook/antigravity-awesome-skills/skills/redis-cli/references/inspection-and-monitoring.md
T
2026-07-01 16:02:41 +00:00

8.3 KiB

Inspection and Monitoring

Table of Contents

INFO Command

Returns server information and statistics as key-value pairs organized in sections.

# All default sections
redis-cli INFO

# Specific sections
redis-cli INFO server
redis-cli INFO memory
redis-cli INFO keyspace
redis-cli INFO replication
redis-cli INFO clients
redis-cli INFO stats
redis-cli INFO persistence
redis-cli INFO cpu
redis-cli INFO commandstats
redis-cli INFO latencystats
redis-cli INFO cluster
redis-cli INFO modules

# Multiple sections (Redis 7.0+)
redis-cli INFO memory keyspace

# All sections including hidden ones
redis-cli INFO all

# Everything including debug sections
redis-cli INFO everything

Key INFO Sections

server — Redis version, process ID, uptime, architecture, TCP port, config file memory — Used memory, peak memory, fragmentation ratio, total system memory keyspace — Key counts per database (e.g., db0:keys=1000,expires=50,avg_ttl=3600) clients — Connected clients, blocked clients, max clients replication — Role (master/replica), connected replicas, replication offset stats — Total connections, commands processed, keyspace hits/misses persistence — RDB/AOF status, last save time, current save progress cpu — User/system CPU time consumed by Redis

Useful INFO Queries

# Check memory usage and fragmentation
redis-cli INFO memory | grep -E "used_memory_human|fragmentation_ratio"

# Monitor keyspace changes
redis-cli INFO keyspace

# Check replication health
redis-cli INFO replication | grep -E "role|connected_slaves|master_repl_offset"

# Track hit rate
redis-cli INFO stats | grep -E "keyspace_hits|keyspace_misses"

# Watch specific metric over time
redis-cli -r -1 -i 5 INFO memory | grep used_memory_human

Continuous Stats Mode

Rolling display of server statistics updated every second (configurable with -i).

redis-cli --stat

# Change update interval
redis-cli --stat -i 5    # every 5 seconds

Output columns:

------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections
506        1015.00K 1       0       24 (+0)             7
506        1015.00K 1       0       25 (+1)             7
  • keys: Total key count
  • mem: Memory usage
  • clients: Connected clients
  • blocked: Blocked clients
  • requests: Total processed requests (+delta since last line)
  • connections: Total connections since startup

The delta in parentheses makes it easy to spot sudden traffic spikes.

MONITOR Command

Streams all commands processed by the Redis server in real time.

redis-cli MONITOR

Output format:

1460100081.165665 [0 127.0.0.1:51706] "set" "shipment:8000736522714:status" "sorting"
1460100083.053365 [0 127.0.0.1:51707] "get" "shipment:8000736522714:status"

Fields: timestamp [db client_addr] "command" "arg1" "arg2" ...

Warning: MONITOR adds significant overhead (each command is also sent to MONITOR clients). Avoid running it for extended periods on busy production servers.

Useful for debugging — pipe through grep to filter:

redis-cli MONITOR | grep "SET"
redis-cli MONITOR | grep "user:"

Latency Analysis

Redis provides multiple latency tools for different diagnostic scenarios.

Basic Latency (--latency)

Continuously sends PING and measures round-trip time (100 samples/sec):

redis-cli --latency
# min: 0, max: 1, avg: 0.19 (427 samples)

Stats are in milliseconds. When not in a TTY (or with --raw), samples for 1 second then exits with a single output line.

Latency History (--latency-history)

Same as --latency but resets statistics every 15 seconds (configurable):

redis-cli --latency-history
redis-cli --latency-history -i 30    # 30-second windows

Latency Distribution (--latency-dist)

Color-coded spectrum visualization of latency distribution:

redis-cli --latency-dist

Requires xterm 256-color terminal. Default 1-second interval, change with -i.

Intrinsic Latency (--intrinsic-latency)

Measures the baseline latency of the system (kernel scheduler, hypervisor), not Redis itself.

# Run ON THE SAME MACHINE as Redis, not remotely
redis-cli --intrinsic-latency 5

The argument is the test duration in seconds. Output:

Max latency so far: 739 microseconds.
65433042 total runs (avg latency: 0.0764 microseconds).
Worst run took 9671x longer than the average latency.

This tells you the minimum achievable latency on this system. Redis cannot outperform this baseline.

LATENCY Command (Redis Internal)

Redis also tracks slow events internally:

redis-cli LATENCY LATEST              # Latest latency spikes per event
redis-cli LATENCY HISTORY event-name  # Time-series data for an event
redis-cli LATENCY GRAPH event-name    # ASCII graph of latency over time
redis-cli LATENCY RESET [event ...]   # Reset latency data
redis-cli LATENCY DOCTOR              # Diagnose latency issues

Common event names: command, fork, rdb-unlink, aof-write, aof-fsync-always.

RDB Backup

Transfer an RDB dump file from a remote Redis instance to the local machine.

redis-cli --rdb /tmp/dump.rdb
# SYNC sent to master, writing 13256 bytes to '/tmp/dump.rdb'
# Transfer finished with success.

Check exit code for errors:

redis-cli --rdb /tmp/dump.rdb
echo $?    # 0 = success, non-zero = error

Functions-only RDB (skip key data):

redis-cli --functions-rdb /tmp/functions.rdb

Useful for automated backup scripts and cron jobs. The RDB file can be loaded by any Redis instance.

Replica Mode

Simulates a replica to inspect the replication stream from a master:

redis-cli --replica

Output shows commands as they are replicated in CSV format:

SYNC with master, discarding 13256 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"
"SELECT","0"
"SET","last_name","Enigk"
"INCR","mycounter"

Useful for debugging replication issues and understanding what data is being sent to replicas.

LRU Simulation

Simulates cache behavior to help determine the optimal maxmemory setting.

# Simulate 10 million keys with LRU eviction
redis-cli --lru-test 10000000

Prerequisites:

  • Configure maxmemory (e.g., 100mb) in redis.conf
  • Set maxmemory-policy to allkeys-lru
  • WARNING: This test uses pipelining and stresses the server — never use on production instances

Output shows hit/miss rates:

156000 Gets/sec | Hits: 4552 (2.92%) | Misses: 151448 (97.08%)
153750 Gets/sec | Hits: 12906 (8.39%) | Misses: 140844 (91.61%)

Use this to find the right maxmemory value for your key count and access pattern (80-20 power law distribution). A miss rate >10% usually means more memory is needed.

Slow Log

The slow log records commands that exceed a configured execution time threshold. This is the first tool to reach for when debugging unexplained latency.

Configuration

# Check current slowlog settings
redis-cli CONFIG GET slowlog*

# slowlog-log-slower-than: threshold in microseconds (negative = disabled)
# slowlog-max-len: maximum number of entries to keep (ring buffer)
redis-cli CONFIG SET slowlog-log-slower-than 10000   # 10ms
redis-cli CONFIG SET slowlog-max-len 128

Querying

# Get recent slow log entries (default: 10)
redis-cli SLOWLOG GET
redis-cli SLOWLOG GET 20              # Last 20 entries

# Each entry format:
# 1) id            — unique entry ID
# 2) timestamp     — Unix timestamp
# 3) duration      — execution time in microseconds
# 4) command       — array: [cmd, arg1, arg2, ...]
# 5) client        — client address:port
# 6) client_name   — client name (via CLIENT SETNAME)

# Get entry count
redis-cli SLOWLOG LEN

# Reset (clear all entries)
redis-cli SLOWLOG RESET

Useful SLOWLOG Queries

# Find slowest commands
redis-cli SLOWLOG GET 50 | grep -E "^\d+\)|^\d+\) \(integer\)"

# Monitor slow log continuously
redis-cli -r -1 -i 10 SLOWLOG GET 5

# Combine with LATENCY for deeper analysis
redis-cli LATENCY LATEST
redis-cli SLOWLOG GET 10