Play with redis-server

Various tests were carried out in search of a fast redis-server.

A strong single thread is required for this test.

Now there are decided differences with different redis versions on different Linux distributions. This is tried to be recorded here.

My test server is in the data center at Hetzner.

Server specs:

CPU: Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz
RAM: 64GB DDR4
DISK: 2x NVME 512GB

Test 1 – Ubuntu 16.x – redis 3.0.3

root@Ubuntu-1604-xenial-64-minimal# redis-benchmark -q
PING_INLINE: 149476.83 requests per second
PING_BULK: 150375.94 requests per second
SET: 151745.08 requests per second
GET: 149925.03 requests per second
INCR: 150602.42 requests per second
LPUSH: 149476.83 requests per second
LPOP: 147275.41 requests per second
SADD: 147929.00 requests per second
SPOP: 152905.20 requests per second
LPUSH (needed to benchmark LRANGE): 149700.61 requests per second
LRANGE_100 (first 100 elements): 84530.86 requests per second
LRANGE_300 (first 300 elements): 31298.90 requests per second
LRANGE_500 (first 450 elements): 21537.80 requests per second
LRANGE_600 (first 600 elements): 16700.07 requests per second
MSET (10 keys): 153374.23 requests per second

Test 2 – Ubuntu 19.x – redis 5.0.5

root@Ubuntu-1910-eoan-64-minimal# redis-benchmark -q
PING_INLINE: 132802.12 requests per second
PING_BULK: 131752.31 requests per second
SET: 135685.22 requests per second
GET: 134589.50 requests per second
INCR: 133155.80 requests per second
LPUSH: 131578.95 requests per second
RPUSH: 134228.19 requests per second
LPOP: 137174.22 requests per second
RPOP: 136425.66 requests per second
SADD: 131752.31 requests per second
HSET: 132626.00 requests per second
SPOP: 128369.71 requests per second
LPUSH (needed to benchmark LRANGE): 135501.36 requests per second
LRANGE_100 (first 100 elements): 68728.52 requests per second
LRANGE_300 (first 300 elements): 30931.02 requests per second
LRANGE_500 (first 450 elements): 21815.01 requests per second
LRANGE_600 (first 600 elements): 16906.17 requests per second
MSET (10 keys): 116822.43 requests per second

Test 3 – Debian 10.x – redis 5.0.3

root@Debian-102-buster-64-minimal# redis-benchmark -q
PING_INLINE: 102249.49 requests per second
PING_BULK: 106951.88 requests per second
SET: 102249.49 requests per second
GET: 105596.62 requests per second
INCR: 102669.41 requests per second
LPUSH: 102040.81 requests per second
RPUSH: 101936.80 requests per second
LPOP: 98328.42 requests per second
RPOP: 102249.49 requests per second
SADD: 102880.66 requests per second
HSET: 97751.71 requests per second
SPOP: 104931.80 requests per second
LPUSH (needed to benchmark LRANGE): 99601.60 requests per second
LRANGE_100 (first 100 elements): 55370.98 requests per second
LRANGE_300 (first 300 elements): 29163.02 requests per second
LRANGE_500 (first 450 elements): 21677.87 requests per second
LRANGE_600 (first 600 elements): 17102.79 requests per second
MSET (10 keys): 80000.00 requests per second

Test 4 – Debian 10.x – redis 6.0.0 beta

root@Debian-102-buster-64-minimal# redis-benchmark -q
PING_INLINE: 149253.73 requests per second
PING_BULK: 152207.00 requests per second
SET: 151057.41 requests per second
GET: 149476.83 requests per second
INCR: 149253.73 requests per second
LPUSH: 151975.69 requests per second
RPUSH: 151057.41 requests per second
LPOP: 151975.69 requests per second
RPOP: 152207.00 requests per second
SADD: 150150.14 requests per second
HSET: 152439.02 requests per second
SPOP: 151285.92 requests per second
LPUSH (needed to benchmark LRANGE): 153374.23 requests per second
LRANGE_100 (first 100 elements): 85543.20 requests per second
LRANGE_300 (first 300 elements): 35790.98 requests per second
LRANGE_500 (first 450 elements): 26143.79 requests per second
LRANGE_600 (first 600 elements): 20738.28 requests per second
MSET (10 keys): 157480.31 requests per second

Test 5 – Ubuntu 16.x – redis 6.0.0 beta

root@Ubuntu-1604-xenial-64-minimal# redis-benchmark -q
PING_INLINE: 140252.45 requests per second
PING_BULK: 141843.97 requests per second
SET: 142857.14 requests per second
GET: 141843.97 requests per second
INCR: 142247.52 requests per second
LPUSH: 144092.22 requests per second
RPUSH: 143472.02 requests per second
LPOP: 141843.97 requests per second
RPOP: 140252.45 requests per second
SADD: 141643.06 requests per second
HSET: 143061.52 requests per second
SPOP: 141643.06 requests per second
LPUSH (needed to benchmark LRANGE): 144927.53 requests per second
LRANGE_100 (first 100 elements): 78678.20 requests per second
LRANGE_300 (first 300 elements): 34470.87 requests per second
LRANGE_500 (first 450 elements): 25025.03 requests per second
LRANGE_600 (first 600 elements): 19821.61 requests per second
MSET (10 keys): 150375.94 requests per second

Test 6 – Arch Linux – Release 2020.01.01 – redis 5.0.7

[root@archlinux-latest-64-minimal ~]# redis-benchmark -q
PING_INLINE: 136239.78 requests per second
PING_BULK: 136239.78 requests per second
SET: 138121.55 requests per second
GET: 135685.22 requests per second
INCR: 137551.58 requests per second
LPUSH: 137931.03 requests per second
RPUSH: 139082.06 requests per second
LPOP: 139275.77 requests per second
RPOP: 137362.64 requests per second
SADD: 136425.66 requests per second
HSET: 136986.30 requests per second
SPOP: 136239.78 requests per second
LPUSH (needed to benchmark LRANGE): 140646.97 requests per second
LRANGE_100 (first 100 elements): 101729.40 requests per second
LRANGE_300 (first 300 elements): 45682.96 requests per second
LRANGE_500 (first 450 elements): 30618.49 requests per second
LRANGE_600 (first 600 elements): 25252.53 requests per second
MSET (10 keys): 143472.02 requests per second

Test 7 – Arch Linux – Release 2020.01.01 – redis 6.0.0 beta – 1 thread

root@archlinux-latest-64-minimal# redis-benchmark --threads 1 -q
PING_INLINE: 136425.66 requests per second
PING_BULK: 134952.77 requests per second
SET: 134589.50 requests per second
GET: 136054.42 requests per second
INCR: 135685.22 requests per second
LPUSH: 139470.02 requests per second
RPUSH: 139664.80 requests per second
LPOP: 138696.25 requests per second
RPOP: 137362.64 requests per second
SADD: 132275.14 requests per second
HSET: 137741.05 requests per second
SPOP: 134770.89 requests per second
LPUSH (needed to benchmark LRANGE): 138696.25 requests per second
LRANGE_100 (first 100 elements): 65616.80 requests per second
LRANGE_300 (first 300 elements): 27389.76 requests per second
LRANGE_500 (first 450 elements): 19739.44 requests per second
LRANGE_600 (first 600 elements): 15186.03 requests per second
MSET (10 keys): 148367.95 requests per second

Test 8 – Arch Linux – Release 2020.01.01 – redis 6.0.0 beta – 2 threads

root@archlinux-latest-64-minimal# redis-benchmark --threads 2 -q
PING_INLINE: 240384.61 requests per second
PING_BULK: 261780.11 requests per second
SET: 251256.28 requests per second
GET: 251256.28 requests per second
INCR: 241545.89 requests per second
LPUSH: 240963.86 requests per second
RPUSH: 199600.80 requests per second
LPOP: 219298.25 requests per second
RPOP: 199600.80 requests per second
SADD: 220264.31 requests per second
HSET: 238663.48 requests per second
SPOP: 247524.75 requests per second
LPUSH (needed to benchmark LRANGE): 244498.77 requests per second
LRANGE_100 (first 100 elements): 100000.00 requests per second
LRANGE_300 (first 300 elements): 53163.21 requests per second
LRANGE_500 (first 450 elements): 36363.64 requests per second
LRANGE_600 (first 600 elements): 30229.75 requests per second
MSET (10 keys): 170068.03 requests per second