Redis Roadmap
43 sections • 533 topics
- 1. Installing Redis Server
- 2. Starting Redis Server
- 3. Connecting with Redis CLI
- 4. Configuring redis.conf File
- 5. Setting Configuration at Runtime
- Example: Live config changes via CONFIG SET
- 6. Getting Configuration Values
- Example: Inspect runtime configuration
- 7. Persisting Runtime Configuration
- 8. Setting Server Verbosity
- 9. Configuring Database Count
- 10. Understanding Redis Data Model
- 1. Checking Key Existence
- 2. Deleting Keys
- 3. Getting Key Type
- 4. Renaming Keys
- 5. Setting Key Expiration
- 6. Setting Millisecond Expiration
- 7. Removing Expiration
- 8. Getting Time to Live
- 9. Finding Keys by Pattern
- Example: Safe pattern scan
- 10. Getting Random Key
- 11. Copying Keys
- 12. Touching Keys
- 13. Dumping and Restoring Keys
- 1. Getting Object Encoding
- 2. Getting Object Frequency
- 3. Getting Object Idle Time
- 4. Getting Object Reference Count
- 5. Getting Object Help
- 6. Understanding Internal Encodings
- 7. Understanding List Encodings
- 8. Understanding Hash Encodings
- 9. Understanding Set Encodings
- 10. Understanding Sorted Set Encodings
- 1. Setting String Values
- Example: Atomic SET with TTL and condition
- 2. Getting String Values
- 3. Setting Multiple Values
- 4. Setting with Expiration
- 5. Setting if Not Exists
- 6. Getting and Setting
- 7. Appending to Strings
- 8. Getting String Length
- 9. Getting Substring
- 10. Incrementing Numbers
- Example: Atomic counter
- 11. Decrementing Numbers
- 12. Incrementing Floats
- 1. Pushing Elements
- 2. Pushing if Exists
- 3. Popping Elements
- 4. Getting List Length
- 5. Getting Elements by Range
- 6. Getting Elements by Index
- 7. Setting Elements by Index
- 8. Inserting Elements
- 9. Trimming Lists
- 10. Removing Elements
- 11. Getting List Position
- 12. Using LMOVE for Element Transfer
- Example: Reliable worker queue
- 13. Using LMPOP for Multiple Pops
- 1. Adding Set Members
- 2. Removing Set Members
- 3. Checking Member Existence
- 4. Getting All Members
- 5. Getting Set Cardinality
- 6. Getting Random Members
- 7. Popping Random Members
- 8. Moving Members Between Sets
- 9. Computing Set Union
- 10. Computing Set Intersection
- 11. Computing Set Difference
- 12. Scanning Set Members
- 1. Adding Sorted Set Members
- Example: Leaderboard update
- 2. Removing Members
- 3. Getting Members by Rank
- 4. Getting Members by Score
- 5. Getting Member Score
- 6. Getting Member Rank
- 7. Getting Set Cardinality
- 8. Counting by Score Range
- 9. Incrementing Member Score
- 10. Removing by Rank
- 11. Removing by Score
- 12. Popping Min and Max Members
- 13. Computing Sorted Set Union
- 14. Computing Sorted Set Intersection
- 15. Scanning Sorted Set
- 1. Setting Hash Fields
- 2. Getting Hash Fields
- 3. Getting All Fields
- 4. Checking Field Existence
- 5. Deleting Hash Fields
- 6. Getting Field Count
- 7. Setting if Field Not Exists
- 8. Incrementing Hash Values
- 9. Getting String Length of Field
- 10. Getting Random Fields
- 11. Scanning Hash Fields
- 12. Setting Field Expiration
- Example: Per-field expiration on session hash
- 1. Setting Bit Values
- 2. Getting Bit Values
- 3. Counting Set Bits
- 4. Finding First Bit
- 5. Performing Bitwise Operations
- Example: Daily active users intersection
- 6. Getting Bit Field Values
- 7. Setting Multiple Bit Fields
- 8. Using BITFIELD_RO for Read-Only Operations
- 9. Understanding Bitmap Memory Efficiency
- 10. Using Bitmaps for Analytics
- 11. Implementing Bitmap-Based Counters
- Example: Packed per-user counters with BITFIELD
- 1. Adding Stream Entries
- 2. Reading Stream Entries
- 3. Getting Stream Length
- 4. Trimming Streams
- 5. Deleting Stream Entries
- 6. Creating Consumer Groups
- 7. Reading as Consumer
- 8. Acknowledging Messages
- 9. Getting Pending Messages
- 10. Claiming Pending Messages
- 11. Getting Stream Info
- 12. Managing Consumers
- 13. Setting Stream ID
- 1. Using Pattern Matching
- 2. Implementing Cursor-Based Iteration
- Example: SCAN loop in bash
- 3. Scanning Hash Fields
- 4. Scanning Set Members
- 5. Scanning Sorted Set Members
- 6. Setting Scan Count
- 7. Using Pattern Filters
- 8. Using TYPE Filter with SCAN
- 9. Using NOVALUES Option
- 10. Handling Large Keyspaces
- 11. Implementing Efficient Pagination
- Example: Score-based pagination on sorted set
- 12. Avoiding KEYS in Production
- 1. Using Blocking List Operations
- 2. Using BLMOVE for Reliable Queues
- 3. Using BLMPOP for Multiple List Operations
- 4. Using Blocking Sorted Set Operations
- 5. Using BZMPOP for Multiple Sorted Sets
- 6. Using Blocking Stream Reads
- 7. Setting Block Timeout
- 8. Blocking Multiple Keys
- 9. Understanding Client Blocking
- 10. Handling Timeout Responses
- 11. Implementing Queue Patterns
- Example: Reliable worker loop
- 12. Avoiding Indefinite Blocking
- 1. Starting Transactions
- 2. Executing Transactions
- Example: Atomic two-key update
- 3. Discarding Transactions
- 4. Watching Keys
- 5. Unwatching Keys
- 6. Understanding Atomicity Guarantees
- 7. Implementing Optimistic Locking
- Example: Safe counter update with WATCH
- 8. Combining with WATCH for Check-and-Set
- 9. Handling Transaction Errors
- 10. Understanding No Rollback Behavior
- 1. Executing Scripts
- 2. Caching Scripts
- 3. Passing Keys and Arguments
- 4. Using Redis Commands in Scripts
- Example: Atomic compare-and-set
- 5. Returning Values from Scripts
- 6. Understanding Script Atomicity
- 7. Checking Script Existence
- 8. Flushing Script Cache
- 9. Killing Running Scripts
- 10. Debugging Scripts
- 11. Handling Script Errors
- 12. Implementing Atomic Operations
- Example: Atomic rate-limit increment with TTL
- 1. Publishing Messages
- 2. Subscribing to Channels
- 3. Unsubscribing from Channels
- 4. Using Pattern Subscriptions
- 5. Using Sharded Pub/Sub
- 6. Listing Active Channels
- 7. Counting Subscribers
- 8. Counting Pattern Subscribers
- 9. Understanding Message Delivery Guarantees
- 10. Handling Connection Issues
- 11. Implementing Fan-Out Pattern
- Example: Broadcast event to all listeners
- 1. Understanding Pipeline Concept
- 2. Implementing Pipeline in Clients
- Example: Pipeline in Jedis
- 3. Batching Multiple Commands
- 4. Handling Pipeline Responses
- 5. Comparing Pipelining vs Transactions
- Pipeline
- Transaction (MULTI/EXEC)
- 6. Understanding Round-Trip Time Savings
- 7. Measuring Performance Gains
- 8. Using Pipeline with Lua Scripts
- 9. Managing Pipeline Buffer Size
- 10. Avoiding Pipeline Pitfalls
- 1. Using Cache-Aside Pattern
- Example: Lookup with cache-aside
- 2. Using Write-Through Pattern
- 3. Using Write-Behind Pattern
- 4. Implementing TTL-Based Expiration
- 5. Handling Cache Invalidation
- 6. Using Probabilistic Early Expiration
- Example: XFetch algorithm
- 7. Implementing Cache Warming
- 8. Preventing Cache Stampede
- 9. Using Lazy Loading
- 10. Implementing Cache Key Patterns
- 11. Using Cache Tagging
- 12. Implementing Cache Versioning
- 1. Setting Lock with SETNX
- 2. Using SET with NX and EX Options
- 3. Implementing Lock Expiration
- 4. Releasing Locks Safely (Lua Script)
- Example: Token-checked release
- 5. Handling Lock Timeouts
- 6. Implementing Redlock Algorithm
- 7. Preventing Deadlocks
- 8. Using WATCH for Optimistic Locking
- 9. Handling Lock Renewal
- Example: Renewal Lua
- 10. Understanding Lock Granularity
- 1. Implementing Fixed Window Counter
- Example: 100 req/min per user
- 2. Implementing Sliding Window Counter
- 3. Using Token Bucket Algorithm
- Example: Token bucket via Lua
- 4. Using Sorted Sets for Sliding Windows
- 5. Using Sliding Window Log Algorithm
- 6. Implementing Leaky Bucket Pattern
- 7. Setting Rate Limit Expiration
- 8. Implementing Distributed Rate Limiting
- 9. Handling Race Conditions
- 10. Optimizing with Lua Scripts
- 1. Using Sorted Sets for Time Series
- 2. Storing Timestamped Data
- 3. Querying by Time Range
- 4. Aggregating Time Series Data
- 5. Implementing Downsampling
- 6. Setting Data Retention Policies
- 7. Using EXPIRE for Auto-Cleanup
- 8. Handling High-Frequency Updates
- 9. Using RedisTimeSeries Module
- 10. Implementing Compaction Strategies
- 1. Adding Elements to Bloom Filter
- 2. Checking Element Existence
- 3. Adding Multiple Elements
- 4. Checking Multiple Elements
- 5. Creating Custom Bloom Filter
- 6. Getting Filter Info
- 7. Understanding False Positive Rate
- 8. Configuring Filter Capacity and Error Rate
- 9. Using for Duplicate Detection
- Example: De-dup processed events
- 10. Comparing with Set-Based Membership Testing
- Bloom Filter
- SET
- 1. Adding Elements to Filter
- 2. Checking Element Existence
- 3. Deleting Elements from Filter
- 4. Adding if Not Exists
- 5. Creating Custom Cuckoo Filter
- 6. Getting Filter Info
- 7. Understanding Deletion Support
- 8. Configuring Filter Capacity
- 9. Comparing with Bloom Filters
- Cuckoo
- Bloom
- 10. Using for Space-Efficient Sets
- 1. Setting JSON Documents
- 2. Getting JSON Values
- 3. Deleting JSON Keys
- 4. Using JSONPath Queries
- 5. Handling Nested Objects
- 6. Getting Object Keys
- 7. Getting Object Length
- 8. Incrementing Numeric Values
- 9. Appending to Strings
- 10. Getting String Length
- 11. Appending to Arrays
- 12. Getting Array Length
- 13. Inserting Array Elements
- 14. Popping Array Elements
- 15. Trimming Arrays
- 1. Understanding RDB Snapshots
- 2. Configuring Save Points
- 3. Triggering Manual Save
- 4. Setting RDB Filename
- 5. Setting RDB Directory
- 6. Getting Last Save Time
- 7. Configuring Compression
- 8. Enabling Checksum
- 9. Handling RDB Failures
- 10. Understanding Fork Performance Impact
- 11. Using RDB for Backups
- 12. Tuning Save Intervals
- 1. Understanding AOF Concept
- 2. Enabling AOF
- 3. Setting AOF Filename
- 4. Configuring Fsync Policy
- 5. Rewriting AOF (BGREWRITEAOF)
- 6. Auto-Rewrite Configuration
- 7. Enabling Mixed Persistence
- 8. Handling AOF Corruption
- 9. Understanding AOF vs RDB Tradeoffs
- AOF
- RDB
- 10. Managing AOF File Growth
- 11. Understanding Fsync Performance Impact
- 12. Recovering from AOF Files
- 1. Configuring Master Server
- 2. Configuring Replica Server
- 3. Setting Replica Read-Only
- 4. Checking Replication Status
- 5. Promoting Replica to Master
- 6. Configuring Diskless Replication
- 7. Setting Replication Timeout
- 8. Enabling Partial Resync
- 9. Using WAIT for Synchronous Replication
- 10. Using WAITAOF for AOF Sync
- 11. Handling Replication Lag
- 12. Monitoring Replication Offset
- 13. Using Replicas for Read Scaling
- 1. Understanding Sentinel Architecture
- 2. Configuring Sentinel Instances
- 3. Monitoring Master Instances
- 4. Setting Quorum Requirements
- 5. Configuring Automatic Failover
- 6. Configuring Down-After-Milliseconds
- 7. Understanding Parallel-Syncs Setting
- 8. Getting Sentinel Info
- 9. Getting Master Address
- 10. Manual Failover
- 11. Adding and Removing Sentinels
- 12. Monitoring Sentinel Events
- 1. Understanding Cluster Architecture
- 2. Creating Cluster Nodes
- 3. Joining Cluster
- 4. Adding Slots to Nodes
- 5. Migrating Slots
- 6. Getting Cluster Info
- 7. Listing Cluster Nodes
- 8. Understanding Hash Slot Distribution
- Example: Hashtag pins keys to one slot
- 9. Configuring Cluster Replicas
- 10. Handling Cluster Failover
- 11. Resharding Cluster
- 12. Monitoring Cluster Health
- 13. Using Cluster-Aware Clients
- 14. Handling Network Partitions
- 1. Setting Password
- 2. Authenticating Clients
- 3. Binding to Specific Interfaces
- 4. Enabling Protected Mode
- 5. Disabling Dangerous Commands
- 6. Using TLS/SSL Encryption
- 7. Configuring TLS Certificates
- 8. Validating Client Certificates
- 9. Using Mutual TLS Authentication
- 10. Configuring TLS Protocols and Ciphers
- 1. Creating ACL Users
- 2. Listing ACL Users
- 3. Getting User Details
- 4. Deleting ACL Users
- 5. Setting User Passwords
- 6. Enabling and Disabling Users
- 7. Granting Command Permissions
- 8. Using ACL Categories and Subcommands
- 9. Restricting Key Patterns
- 10. Loading ACL from File
- 11. Saving ACL Configuration
- 12. Checking Current User
- 13. Logging ACL Events
- 1. Listing Connected Clients
- 2. Getting Client Name
- 3. Setting Client Name
- 4. Getting Client Info
- 5. Using CLIENT ID for Tracking
- 6. Killing Client Connections
- 7. Pausing All Clients
- 8. Unblocking Clients
- 9. Using CLIENT NO-EVICT
- 10. Using CLIENT NO-TOUCH
- 11. Tracking Client Side Caching
- 12. Implementing Client-Side Caching Invalidation
- Example: BCAST tracking with prefix
- 1. Measuring Memory Consumption
- 2. Setting Max Memory
- 3. Configuring Memory Policies
- 4. Using Smaller Encodings
- 5. Reducing Key Size
- 6. Sharing Common Strings
- 7. Using Hash Field Expiration
- 8. Avoiding Large Keys
- 9. Compressing Values
- 10. Using EXPIRE for Cleanup
- 11. Analyzing Memory with MEMORY USAGE
- 12. Sampling Memory Statistics
- 1. Understanding Eviction Policies
- 2. Using NoEviction Policy
- 3. Using AllKeys-LRU Policy
- 4. Using Volatile-LRU Policy
- 5. Using AllKeys-LFU Policy
- 6. Using Volatile-LFU Policy
- 7. Using AllKeys-Random Policy
- 8. Using Volatile-Random Policy
- 9. Using Volatile-TTL Policy
- 10. Configuring LFU Parameters
- 11. Monitoring Eviction Statistics
- 1. Using Pipelining Effectively
- 2. Avoiding Large Operations
- 3. Using SCAN Instead of KEYS
- 4. Using UNLINK for Large Keys
- 5. Enabling Lazy Free
- 6. Configuring IO Threads
- 7. Tuning TCP Parameters
- 8. Disabling Transparent Huge Pages
- 9. Configuring Kernel Parameters
- 10. Using CONFIG SET for Runtime Changes
- 11. Benchmarking with redis-benchmark
- 12. Optimizing Network Latency
- 1. Using Redis CLI for Testing
- 2. Implementing Unit Tests
- 3. Using Redis Mock Libraries
- 4. Testing Transactions
- 5. Testing Lua Scripts
- 6. Benchmarking Performance
- 7. Using --intrinsic-latency for Baseline Testing
- 8. Load Testing with Multiple Clients
- 9. Testing Failover Scenarios
- 10. Validating Data Integrity
- 11. Testing Cluster Resharding
- 12. Simulating Network Partitions
- 1. Debugging Connection Timeouts
- 2. Resolving Memory Overflow Errors
- 3. Handling Out-of-Memory Errors
- 4. Handling Slow Query Performance
- 5. Fixing Replication Lag
- 6. Resolving Cluster Split-Brain
- 7. Debugging Cluster Node Failures
- 8. Debugging Lua Script Errors
- 9. Fixing Persistence Failures
- 10. Resolving AOF Corruption
- 11. Debugging Client Blocking Issues
- 12. Fixing Network Connectivity Issues
- 13. Resolving Authentication Failures
- 14. Handling Eviction Policy Issues