Zasadniczo dostępne są dwa główne typy: asynchroniczne snapsnoty i fsync()
. Nazywa się odpowiednio RDB i AOF. Więcej na temat persistence modes on the official page.
Obsługa sygnału zsynchronizowanego procesu synchronizuje się z dyskiem po otrzymaniu SIGTERM na przykład, więc dane będą nadal dostępne po ponownym uruchomieniu. Myślę, że demon lub system operacyjny musi się zawiesić, zanim pojawi się uszkodzenie integralności, nawet z domyślnymi ustawieniami (migawki RDB).
Ustawienie AOF używa pliku Append Only, który rejestruje polecenia, które otrzymuje serwer, i odtwarza bazę danych od początku przy zimnym starcie z zapisanego pliku. Domyślną zasadą synchronizacji dysków jest opróżnianie raz na sekundę (IIRC), ale można ustawić blokowanie i zapisywanie przy każdym poleceniu.
Obiema migawki i przyrostowe dziennik wydaje się oferować zarówno długoterminowe nie-umysł-if-I-miss-a-kilka-sekund-of-danych podejście z bardziej bezpieczne, ale kosztowne dziennik przyrostowy. Redis obsługuje tworzenie klastrów po wyjęciu z pudełka, więc replikacja może być wykonana, jak się wydaje.
Używam domyślnego ustawienia RDB i zapisuję migawki na zdalnym serwerze FTP. Nie widziałem jeszcze awarii, która spowodowała utratę danych. Ostra awaria sprzętu lub przerwy w zasilaniu najprawdopodobniej, ale jestem hostowany na VPS. Szczupła szansa, że tak się dzieje :)
Ponieważ Redis twierdzi, że ma opcjonalną wytrzymałość, to powiedziałbym, że można go bezpiecznie użyć, jeśli zdecydujesz się na utrwalanie na HDD. Jednak w przypadku danych sesji - zdecydowanie zapisałbym je w pamięci RAM (co oznacza, że nie przejmowałbym się częścią trwałości całej tej próby). Najgorsze, co powinno się zdarzyć w przypadku utraty danych sesji, jest wylogowanie użytkowników. –
Tak, ale jest to część mojego wymogu, użytkownicy nie powinni się logować, ponieważ niektóre dane użytkowników są przechowywane w czasie sesji, gdy użytkownicy nie są zalogowani (goście-goście). Pobierają RAM Redis, ale z włączonym protokołowaniem i/lub kopią zapasową. Jeśli straciliśmy kilka sesji, jest to dopuszczalne. – Trent
Cóż, jeśli używasz dysku twardego, jaki jest sens używania Redis? Prawdopodobnie opóźnia to faktyczne zatwierdzenie na dysku w celu zwiększenia wydajności, tak samo jak MySQL, jeśli jest skonfigurowany w ten sposób. Czy rozważałeś przeniesienie MySQL na szybszy podsystem I/O?To nie tak, że Redis będzie działał magicznie 50 razy szybciej na tym samym sprzęcie, jeśli musi korzystać z tych samych subsydiów we/wy. –