Szymonjjay:
Może włączyć tryb “APPEND ONLY MODE”, który po każdej zmianie wartości klucza zapisuje jego zmianę do pliku i jak to redis ujmuje w pliku konfiguracyjnym:
Móc można, ale trzeba pamiętać o częściowej utracie wydajności. Podczas gdy przy domyślnym appendfsync everysec, które w teorii opisujesz, jest to nie tak wiele, przy bliższym modelowi ACID ustawieniu, tj. appendfsync always, które faktycznie masz na myśli, tracimy znaczną część wydajności poleceń zmieniających dane, np. SET. Uzyskamy wtedy nawet tak mało jak zaledwie kilka, może kilkanaście procent wcześniejszej wydajności, zależnie od używanego dysku (o zgrozo co by było na HDD).
Trzeba mieć to na uwadze, bo tracimy wtedy część zalet tego magicznego redisa, za którymi tak bardzo niektórzy gonią, tj. szybkość. Zwyczajnie MySQL do pewnych zadań jest lepszym wyborem, a dokręcanie śruby redisowi niekoniecznie zawsze ma sens.
Postanowiłem przetestować swoją teorię:
# redis-server
$ redis-benchmark -t set,lpush -n 1000000 -q
SET: 130975.77 requests per second
LPUSH: 128221.57 requests per second
# redis-server --appendonly yes
$ redis-benchmark -t set,lpush -n 1000000 -q
SET: 124610.60 requests per second
LPUSH: 119388.73 requests per second
# redis-server --appendonly yes --appendfsync always
$ redis-benchmark -t set,lpush -n 1000000 -q
SET: 9713.45 requests per second
LPUSH: 9739.00 requests per second

Zaznaczam od razu, że są to testy wykonane na całkiem przyzwoitym sprzęcie:
- Dysk: Samsung SSD 970 EVO 1TB (NVMe)
- Procesor: AMD Ryzen 5 3600
Podczas gdy jest duża szansa, że mimo polityki appendfsync always redis nadal będzie wystarczająco szybki, jego wpływ na obciążenie serwera wzrośnie znacznie, jeśli porównywać do domyślnych ustawień (zapisów cyklicznych), co może być sprzeczne dla części osób z ich wizją zastosowania tej bazy.