I benchmarked a significant improvement (using redis-benchmark
) so this was well worth it.
Additionally, the Bullseye rather than the Alpine image appears considerably faster. Presumably because of glibc.
- 27.44s (UNIX socket + Debian image) versus 53.29s (TCP + Alpine image)
Resources that were handy in configuration:
- https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/
- https://medium.com/@jonbaldie/how-to-connect-to-redis-with-unix-sockets-in-docker-9e94e01b7acd
- https://doc.owncloud.com/server/next/admin_manual/configuration/server/caching_configuration.html#redis-configuration
- https://betterprogramming.pub/how-to-share-a-postgres-socket-between-docker-containers-ad126e430de7
- https://raw.githubusercontent.com/redis/redis/7.0/redis.conf
- https://redis.io/docs/management/optimization/benchmarks/
- https://hub.docker.com/_/redis
- https://redis.io/docs/management/config/
time redis-benchmark -q
root@f8529b27833e:/data# time redis-benchmark -q
PING_INLINE: 99700.90 requests per second, p50=0.255 msec
PING_MBULK: 99502.48 requests per second, p50=0.255 msec
SET: 99403.58 requests per second, p50=0.255 msec
GET: 99800.40 requests per second, p50=0.255 msec
INCR: 99601.60 requests per second, p50=0.255 msec
LPUSH: 99108.03 requests per second, p50=0.255 msec
RPUSH: 98135.42 requests per second, p50=0.255 msec
LPOP: 98716.68 requests per second, p50=0.255 msec
RPOP: 99108.03 requests per second, p50=0.255 msec
SADD: 98522.17 requests per second, p50=0.255 msec
HSET: 98135.42 requests per second, p50=0.255 msec
SPOP: 97087.38 requests per second, p50=0.255 msec
ZADD: 98716.68 requests per second, p50=0.255 msec
ZPOPMIN: 99800.40 requests per second, p50=0.255 msec
LPUSH (needed to benchmark LRANGE): 99601.60 requests per second, p50=0.255 msec
LRANGE_100 (first 100 elements): 59988.00 requests per second, p50=0.415 msec
LRANGE_300 (first 300 elements): 26553.37 requests per second, p50=0.911 msec
LRANGE_500 (first 500 elements): 18723.09 requests per second, p50=1.303 msec
LRANGE_600 (first 600 elements): 16520.73 requests per second, p50=1.495 msec
MSET (10 keys): 97656.24 requests per second, p50=0.255 msec
real 0m33.045s
user 0m17.631s
sys 0m15.112s
root@f8529b27833e:/data#
root@68b1df618c33:/data# time redis-benchmark -q -s /tmp/redis.sock
PING_INLINE: 133511.34 requests per second, p50=0.183 msec
PING_MBULK: 132978.73 requests per second, p50=0.183 msec
SET: 134048.27 requests per second, p50=0.183 msec
GET: 133333.33 requests per second, p50=0.183 msec
INCR: 133689.83 requests per second, p50=0.183 msec
LPUSH: 134228.19 requests per second, p50=0.183 msec
RPUSH: 134408.59 requests per second, p50=0.183 msec
LPOP: 134408.59 requests per second, p50=0.183 msec
RPOP: 133868.81 requests per second, p50=0.183 msec
SADD: 133511.34 requests per second, p50=0.183 msec
HSET: 134408.59 requests per second, p50=0.183 msec
SPOP: 133155.80 requests per second, p50=0.183 msec
ZADD: 133511.34 requests per second, p50=0.183 msec
ZPOPMIN: 134048.27 requests per second, p50=0.183 msec
LPUSH (needed to benchmark LRANGE): 134408.59 requests per second, p50=0.183 msec
LRANGE_100 (first 100 elements): 72150.07 requests per second, p50=0.343 msec
LRANGE_300 (first 300 elements): 29868.58 requests per second, p50=0.815 msec
LRANGE_500 (first 500 elements): 20068.23 requests per second, p50=1.215 msec
LRANGE_600 (first 600 elements): 17409.47 requests per second, p50=1.415 msec
MSET (10 keys): 133511.34 requests per second, p50=0.183 msec
real 0m27.444s
user 0m17.521s
sys 0m9.779s
PING_INLINE: 95969.28 requests per second, p50=0.263 msec
PING_MBULK: 94607.38 requests per second, p50=0.263 msec
SET: 96153.85 requests per second, p50=0.263 msec
GET: 96246.39 requests per second, p50=0.263 msec
INCR: 97370.98 requests per second, p50=0.255 msec
LPUSH: 97276.27 requests per second, p50=0.255 msec
RPUSH: 97560.98 requests per second, p50=0.255 msec
LPOP: 96525.09 requests per second, p50=0.263 msec
RPOP: 96246.39 requests per second, p50=0.263 msec
SADD: 96432.02 requests per second, p50=0.263 msec
HSET: 96618.36 requests per second, p50=0.263 msec
SPOP: 96805.42 requests per second, p50=0.263 msec
ZADD: 95877.28 requests per second, p50=0.263 msec
ZPOPMIN: 97560.98 requests per second, p50=0.255 msec
LPUSH (needed to benchmark LRANGE): 97943.19 requests per second, p50=0.255 msec
LRANGE_100 (first 100 elements): 31496.06 requests per second, p50=0.791 msec
LRANGE_300 (first 300 elements): 12377.77 requests per second, p50=2.007 msec
LRANGE_500 (first 500 elements): 8471.70 requests per second, p50=2.935 msec
LRANGE_600 (first 600 elements): 7355.10 requests per second, p50=3.407 msec
MSET (10 keys): 94250.71 requests per second, p50=0.263 msec
real 0m 53.29s
user 0m 28.02s
sys 0m 24.99s
/usr/local/bin #
/usr/local/bin # time ./redis-benchmark -q -s /tmp/redis.sock
PING_INLINE: 130208.34 requests per second, p50=0.191 msec
PING_MBULK: 130718.95 requests per second, p50=0.191 msec
SET: 130890.05 requests per second, p50=0.191 msec
GET: 131233.59 requests per second, p50=0.191 msec
INCR: 131233.59 requests per second, p50=0.191 msec
LPUSH: 130890.05 requests per second, p50=0.191 msec
RPUSH: 131752.31 requests per second, p50=0.191 msec
LPOP: 130039.02 requests per second, p50=0.191 msec
RPOP: 129870.13 requests per second, p50=0.191 msec
SADD: 131061.59 requests per second, p50=0.191 msec
HSET: 130548.30 requests per second, p50=0.191 msec
SPOP: 130208.34 requests per second, p50=0.191 msec
ZADD: 131233.59 requests per second, p50=0.191 msec
ZPOPMIN: 132450.33 requests per second, p50=0.183 msec
LPUSH (needed to benchmark LRANGE): 131406.05 requests per second, p50=0.191 msec
LRANGE_100 (first 100 elements): 35842.29 requests per second, p50=0.687 msec
LRANGE_300 (first 300 elements): 14092.45 requests per second, p50=1.759 msec
LRANGE_500 (first 500 elements): 9275.58 requests per second, p50=2.655 msec
LRANGE_600 (first 600 elements): 7874.02 requests per second, p50=3.135 msec
MSET (10 keys): 131578.95 requests per second, p50=0.191 msec
real 0m 45.61s
user 0m 27.17s
sys 0m 18.39s
/usr/local/bin #
Test platform:
- Lenovo M920Q (Tiny)
- Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz
- Ubuntu 22.04.2 LTS ("jammy")
- Linux node2 5.15.0-69-generic #76-Ubuntu SMP Fri Mar 17 17:19:29 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
- RAM: 16GB