Skip to main content

Redis Cheatsheet

Access (redis-cli)

TLS disabled

redis-cli --pass "$REDIS_PASSWORD" --no-auth-warning

TLS enabled

redis-cli \
--tls \
--cert /opt/app/cache/certs/tls.crt \
--key /opt/app/cache/certs/tls.key \
--cacert /opt/app/cache/certs/ca.crt \
--pass "$REDIS_PASSWORD" \
--no-auth-warning

List keys

List all keys (use carefully)

KEYS *

Iterate keys (preferred for production)

SCAN 0

SCAN 0 MATCH user:* COUNT 100

Inspect key details

Get the key type:

TYPE <key>

Then retrieve its value based on its type.

Get Value of String-type Key

GET <key>

Get Value of List-type Key

LRANGE <key> 0 -1

Get Value of Set-type Key

SMEMBERS <key>

Get Value of Sorted Set-type Key

ZRANGE <key> 0 -1 WITHSCORES

Get Value of Hash-type Key

HGETALL <key>

Count keys

Total number of keys (by scanning)

redis-cli --pass "$REDIS_PASSWORD" --no-auth-warning --scan | wc -l

Database info

Check the number of keys in each Redis database:

INFO keyspace

# Keyspace
db0:keys=450,expires=12,avg_ttl=500000
db1:keys=200,expires=5,avg_ttl=300000

db0 has 450 keys, db1 has 200 keys. Some keys have expiration times.

Switch Databases

If Redis has multiple databases (default: db0), to work with db0

SELECT 0

To switch to db1:

SELECT 1

Delete Keys

DEL <key>

To delete all keys in the currently-selected database:

FLUSHDB

To delete all keys in Redis:

FLUSHALL

We can also delete them in batches if we don't access/permission/ to FLUSHALL or it's disabled:

BATCH_SIZE=100
redis-cli --tls \
--cert /opt/app/cache/certs/tls.crt \
--key /opt/app/cache/certs/tls.key \
--cacert /opt/app/cache/certs/ca.crt \
-a "$REDIS_PASSWORD" --no-auth-warning \
--scan | xargs -d '\n' -L $BATCH_SIZE redis-cli --tls \
--cert /opt/app/cache/certs/tls.crt \
--key /opt/app/cache/certs/tls.key \
--cacert /opt/app/cache/certs/ca.crt \
-a "$REDIS_PASSWORD" --no-auth-warning DEL

Persistence

redis-cli -a "$REDIS_PASSWORD" INFO persistence
redis-cli -a "$REDIS_PASSWORD" CONFIG GET save

Configuration

Set Log Level

CONFIG SET loglevel debug

Debugging

Monitor

Observe every operation (e.g. key set/get, HGETALL, deletes):

redis-cli --pass "$REDIS_PASSWORD" --no-auth-warning MONITOR

Ping a Remote Redis Server

redis-cli --tls \
--cacert /opt/app/cache/certs/ca.crt \
--cert /opt/app/cache/certs/tls.crt \
--key /opt/app/cache/certs/tls.key \
-h $REMOTE_REDIS_HOST -p 6379 \
-a "$REDIS_PASS" PING

Check Latency

redis-cli -a "$REDIS_PASSWORD" LATENCY DOCTOR
redis-cli -a "$REDIS_PASSWORD" SLOWLOG GET 128

List Clients

The command provides all the clients that communicated with the Redis server:

redis-cli CLIENT LIST

It provides a file descriptor (fd) and an IP address/port of the client. It is very useful when there are connection/TLS issues and we see prints such as in the Redis server logs:

Error accepting a client connection: error:0A000126:SSL routines::unexpected eof while reading (conn: fd=259)

We see here that the client got assigned fd=259 so we can use the command above to see the IP of that specific client belonging to that file descriptor.