Performance benchmarks for Spring Data Valkey operations across different clients.
If using a development build of Spring Data Valkey, first install to your local Maven repository before running the tests:
# From project root
$ ./mvnw clean install -DskipTestsSee instructions on starting a Valkey server in the Developer Guide. The standalone instance started by the Makefile is used in these tests.
All commands below assume you're in the performance/ directory. To run from the project root, use ./mvnw -q compile exec:java[@<test-name>] -pl performance [<parameters>] instead of ../mvnw. Replace <test-name> and <parameters> from options listed below.
Test ValkeyTemplate operations (SET, GET, DELETE) with different clients:
$ ../mvnw -q compile exec:java -Dclient=valkeyglide
$ ../mvnw -q compile exec:java -Dclient=lettuce
$ ../mvnw -q compile exec:java -Dclient=jedisTest template use across multiple threads with different clients:
$ ../mvnw -q compile exec:java@threaded-test -Dclient=valkeyglide
$ ../mvnw -q compile exec:java@threaded-test -Dclient=lettuce
$ ../mvnw -q compile exec:java@threaded-test -Dclient=jedisTest direct client operations without Spring Data Valkey (for comparison):
$ ../mvnw -q compile exec:java@direct-test -Dclient=valkeyglide
$ ../mvnw -q compile exec:java@direct-test -Dclient=lettuce
$ ../mvnw -q compile exec:java@direct-test -Dclient=jedisTest direct client operations across multiple threads:
$ ../mvnw -q compile exec:java@threaded-direct-test -Dclient=valkeyglide
$ ../mvnw -q compile exec:java@threaded-direct-test -Dclient=lettuce
$ ../mvnw -q compile exec:java@threaded-direct-test -Dclient=jedisTest ValkeyTemplate operations (SET, GET, DELETE) with different clients and concurrency levels.
Parameters:
client: Client type -valkeyglide,lettuce,jedis(default:valkeyglide)threads: Number of threads (default:10)operations: Operations per thread (default:50)
# Compare a single client with different concurrency levels
$ ../mvnw -q compile exec:java@load-test -Dclient=valkeyglide -Dthreads=5 -Doperations=20
$ ../mvnw -q compile exec:java@load-test -Dclient=valkeyglide -Dthreads=20 -Doperations=100
# Compare across different clients
$ ../mvnw -q compile exec:java@load-test -Dclient=valkeyglide -Dthreads=100 -Doperations=200
$ ../mvnw -q compile exec:java@load-test -Dclient=lettuce -Dthreads=100 -Doperations=200
$ ../mvnw -q compile exec:java@load-test -Dclient=jedis -Dthreads=100 -Doperations=200