<< back to Guides

๐Ÿš€ Redis Essentials: CLI, Configuration, Persistence, and Usage

Redis is a fast, in-memory key-value store widely used for caching, session storage, pub/sub, and real-time analytics. This guide covers how to use Redis from the CLI, configure it for production, manage persistence, and apply practical usage patterns.


โšก 1. Redis CLI Basics

๐Ÿ”น Connecting to Redis

redis-cli
redis-cli -h 127.0.0.1 -p 6379 -a yourpassword

๐Ÿ”น Common Commands

SET user:1 "John"
GET user:1

DEL user:1
EXISTS user:1
TTL user:1

KEYS user:*        -- (โš ๏ธ avoid in production)
SCAN 0 MATCH user:* COUNT 100

FLUSHDB           -- flush current DB
FLUSHALL          -- flush all DBs

Use SCAN instead of KEYS in production to avoid blocking.


โš™๏ธ 2. Configuration for Production

๐Ÿ”น Config File

Default path: /etc/redis/redis.conf (Debian) or /etc/redis.conf (Alpine/Docker)

Important entries:

bind 127.0.0.1
port 6379
requirepass yourpassword
timeout 300
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly yes
save 900 1
save 300 10
# Test config
redis-server /etc/redis/redis.conf --test-memory 512

# Restart service (Debian)
sudo systemctl restart redis

๐Ÿ” 3. Access Control & Security

๐Ÿ”น Authentication

Enable in config:

requirepass s3cret

Or at runtime:

AUTH s3cret

Use Redis ACLs (redis >= 6.0) for fine-grained control:

ACL SETUSER readonly on >password ~* +@read
ACL SETUSER writer on >password ~* +@write

๐Ÿ’พ 4. Persistence Modes

Redis supports two main persistence strategies:

๐Ÿ”น AOF (Append-Only File)

appendonly yes
appendfsync everysec

๐Ÿ”น RDB Snapshots

save 900 1
save 300 10

Backups are written to:

# Trigger save manually
SAVE         # blocking
BGSAVE       # non-blocking

๐Ÿง  5. Redis Data Structures

Type Example Key Pattern Commands Use Case
Strings user:1:name GET, SET, INCR Counters, simple values
Hashes user:1 HGET, HSET, HGETALL Objects (user profile, etc.)
Lists queue:jobs LPUSH, RPOP, LRANGE Queues, logs
Sets tags:post:1 SADD, SMEMBERS, SINTER Tags, unique values
Sorted Sets leaderboard ZADD, ZRANGE, ZREVRANK Rankings, scores
Bitmaps feature:flags SETBIT, GETBIT, BITCOUNT Flags, tracking on/off bits
HyperLogLog users:seen PFADD, PFCOUNT Approximate cardinality

๐Ÿ›ฐ๏ธ 6. Redis Pub/Sub

For event messaging and notifications between services:

# Terminal A
SUBSCRIBE events:signup

# Terminal B
PUBLISH events:signup "new_user_id:123"

Redis Pub/Sub is fast but not durable โ€” not guaranteed to deliver if subscriber is offline.


๐Ÿ”„ 7. Use as a Cache (with TTLs)

# Set with TTL
SET session:abc123 "user data" EX 3600

# Get TTL
TTL session:abc123

# Atomic get+set+expire
SET mykey "value" EX 10 NX

Common eviction policies (set in config):

Use INFO memory to track memory usage.


๐Ÿ” 8. Monitoring Redis

๐Ÿ”น Stats and Info

INFO          -- All stats
INFO memory   -- Memory-specific
MONITOR       -- Live command feed (verbose)
CLIENT LIST   -- Connected clients

๐Ÿ”น Logging


๐Ÿงช 9. Useful Tools

redis-benchmark -n 100000 -q -P 10

๐Ÿ›ก๏ธ 10. Reliability Tips


๐Ÿ“š Resources


โœ… Summary

Topic Tool/Command/Config
Connect redis-cli -a password
Set/Query Keys SET, GET, EXPIRE, TTL
Persistence appendonly yes, BGSAVE
Monitor INFO, MONITOR, CLIENT LIST
Auth & ACLs requirepass, ACL SETUSER
Eviction maxmemory-policy allkeys-lru
Use as Cache SET key val EX 60 NX
<< back to Guides