Testing Redis Operations

1. Using Redis CLI for Testing

FlagDescription
-xRead last argument from stdin
-r N -i secondsRepeat command N times
--no-raw / --rawControl output formatting
--csvCSV output

2. Implementing Unit Tests

@Test
void incrementsCounter() {
    try (Jedis j = pool.getResource()) {
        j.del("counter");
        assertEquals(1L, j.incr("counter"));
        assertEquals(5L, j.incrBy("counter", 4));
    }
}
PatternDetail
IsolationUse a dedicated DB index or unique key prefix per test
CleanupFLUSHDB in @AfterEach on dedicated DB

3. Using Redis Mock Libraries

LibraryLanguage
embedded-redisJava — spawns real redis-server
Testcontainers RedisJVM, .NET, Go, Python
fakeredisPython — in-process simulation
ioredis-mockNode.js

4. Testing Transactions

Transaction tx = jedis.multi();
tx.set("a", "1");
tx.incr("a");
List<Object> results = tx.exec();
assertEquals(2L, results.get(1));

5. Testing Lua Scripts

ToolUse
EVALRun inline script in tests
SCRIPT LOAD + EVALSHAVerify caching behavior
redis-cli --eval file.luaRun from file

6. Benchmarking Performance

redis-benchmark -t set,get,lpush -n 500000 -P 32 --csv

7. Using --intrinsic-latency for Baseline Testing

CommandDescription
redis-cli --intrinsic-latency 60Measure OS scheduling jitter for 60s

8. Load Testing with Multiple Clients

FlagDescription
-c 200200 concurrent clients
-r 10000001M unique keys (avoid hot key cache)
-t script load,evalshaScript benchmark

9. Testing Failover Scenarios

ActionTest
DEBUG SLEEP 60 on masterTrigger Sentinel detection
SENTINEL FAILOVER <name>Manual failover
kill -9 PIDHard crash simulation

10. Validating Data Integrity

ToolUse
DEBUG DIGESTHash of entire dataset
DEBUG DIGEST-VALUE key [key ...]Per-key hash for diffs
redis-check-rdbValidate RDB file
redis-check-aofValidate AOF

11. Testing Cluster Resharding

redis-cli --cluster reshard host:port \
  --cluster-from <src-id> --cluster-to <dst-id> \
  --cluster-slots 1000 --cluster-yes
VerificationMethod
Slot countsCLUSTER COUNTKEYSINSLOT
Coverageredis-cli --cluster check

12. Simulating Network Partitions

ToolDescription
tc qdisc add ... netem loss 50%Packet loss
iptables -A INPUT -s peer -j DROPBlock peer traffic
ToxiproxyProgrammable network faults
CLIENT PAUSEApplication-level pause