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
- Test 2: Ubuntu 19.x – redis 5.0.5
- Test 3: Debian 10.x – redis 5.0.3
- Test 4: Debian 10.x – redis 6.0.0 beta
- Test 5: Ubuntu 16.x – redis 6.0.0 beta
- Test 6: Arch Linux – Release 2020.01.01 – redis 5.0.7
- Test 7: Arch Linux – Release 2020.01.01 – redis 6.0.0 beta – 1 thread
- Test 8: Arch Linux – Release 2020.01.01 – redis 6.0.0 beta – 2 threads
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