Is redis n duursame datastore?
Vra
Deur "duursame" Ek bedoel, die bediener kan crash op enige tyd, en so lank as wat die skyf oorblyfsels in takt, geen data verlore gaan (sien suur ). Lyk asof dit is wat joernaal af is nie, maar as jy in staat stel joernaal, nie dat nederlaag die doel van die bedryf op in-geheue data? Lees bedrywighede kan nie beïnvloed word deur joernaal, maar dit lyk asof joernaal sal jou skryf prestasie dood te maak.
Oplossing
Redis is nie gewoonlik ontplooi as 'n "volhoubare" datastore (in die sin van die "D" in suur.), Selfs met joernaal. Die meeste gebruik gevalle doelbewus offer 'n bietjie duursaamheid in ruil vir spoed.
Die "aanhegnavraag net lêer" stoor af kan opsioneel opgestel word om te werk in 'n duursame wyse, ten koste van prestasie. Dit sal moet betaal vir 'n fsync () op elke verandering. Om hierdie instel, stel hierdie twee opsies in jou .conf lêer:
appendonly yes
appendfsync always
Van die dokumente: Hoe duursame is die aanhegnavraag net lêer?
Gaan redis.conf, jy kan instel hoeveel keer Redis sal fsync () data op skyf. Daar is drie opsies:
- Fsync () elke keer as 'n nuwe opdrag is aangeheg aan die aanhegnavraag log lêer. baie baie stadig, baie veilig.
- Fsync () een keer elke sekonde. Vinnig genoeg, en jy kan verloor 1 sekonde van data indien daar 'n ramp.
- Nooit fsync (), net sit jou data in die hande van die Operating Stelsel. Hoe vinniger en onveiliger metode.
(Let daarop dat die verstek vir appendfsync in die konfigurasielêer gestuur met Redis post-2.0.0 is everysec
, en nie always
.)