{"id":20946,"date":"2026-08-24T08:35:34","date_gmt":"2026-08-24T06:35:34","guid":{"rendered":"https:\/\/webhosting.de\/redis-lazy-free-speicher-hintergrund-freigeben-optimierung\/"},"modified":"2026-08-24T08:35:34","modified_gmt":"2026-08-24T06:35:34","slug":"redis-leniwe-zwalnianie-pamieci-w-tle-optymalizacja","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/redis-lazy-free-speicher-hintergrund-freigeben-optimierung\/","title":{"rendered":"Redis Lazy Free: efektywne zwalnianie pami\u0119ci w tle"},"content":{"rendered":"<p><strong>Redis \u2013 Lazy Free<\/strong> zwalnia pami\u0119\u0107 asynchronicznie za pomoc\u0105 w\u0105tk\u00f3w dzia\u0142aj\u0105cych w tle, aby du\u017ce klucze podczas usuwania, wyga\u015bni\u0119cia lub ewakuacji <strong>W\u0105tek g\u0142\u00f3wny<\/strong> nie blokowa\u0107. W tym celu celowo stosuj\u0119 UNLINK oraz odpowiednie opcje lazyfree, aby Redis szybko odpowiada\u0142 na zapytania i nie dochodzi\u0142o do skok\u00f3w op\u00f3\u017anie\u0144 w przypadku rozbudowanych struktur danych.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Poni\u017csza lista zawiera zwi\u0119z\u0142e podsumowanie najwa\u017cniejszych aspekt\u00f3w.<\/p>\n<ul>\n  <li><strong>Asynchroniczny<\/strong> zwolni\u0107: natychmiastowe usuni\u0119cie z przestrzeni kluczy, zwolnienie pami\u0119ci w <strong>Kontekst<\/strong>.<\/li>\n  <li><strong>UNLINK<\/strong> zamiast DEL: transakcja zosta\u0142a sfinalizowana bezpo\u015brednio przez administracj\u0119, kosztowne zatwierdzenie nast\u0105pi p\u00f3\u017aniej <strong>przekazane<\/strong>.<\/li>\n  <li><strong>Precyzyjna kontrola<\/strong> wed\u0142ug konfiguracji: expire, eviction, server i user-<strong>\u015acie\u017cka<\/strong> z mo\u017cliwo\u015bci\u0105 oddzielnego w\u0142\u0105czania.<\/li>\n  <li><strong>Monitoring<\/strong> Uwaga: rozpoznawanie zaleg\u0142ych i zako\u0144czonych zatwierdze\u0144 asynchronicznych oraz <strong>Stawka<\/strong>.<\/li>\n  <li><strong>Granice<\/strong> nale\u017cy pami\u0119ta\u0107: to nie zast\u0105pi dobrego modelu danych, strategie TTL pozostaj\u0105 w mocy <strong>Wa\u017cne<\/strong>.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverraum-effizienz-8734.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak dzia\u0142a Lazy Free od \u015brodka<\/h2>\n\n<p>Podczas usuwania natychmiast usuwam klucz z <strong>Przestrze\u0144 kluczy<\/strong>, dzi\u0119ki czemu kolejne polecenia nie b\u0119d\u0105 go ju\u017c widzie\u0107, a w\u0105tek g\u0142\u00f3wny b\u0119dzie kontynuowa\u0142 dzia\u0142anie bezpo\u015brednio. Za faktyczne zwolnienie odpowiednich blok\u00f3w pami\u0119ci odpowiada jeden lub kilka <strong>W\u0105tki w tle<\/strong>, kt\u00f3re stopniowo rozk\u0142adaj\u0105 struktur\u0119 danych. Zmniejsza to odczuwalne spowolnienia, kt\u00f3re mog\u0105 wyst\u0119powa\u0107 w przypadku du\u017cych list, zestaw\u00f3w, tablic hashowych lub ZSET-\u00f3w, gdy zwolnienie pami\u0119ci odbywa si\u0119 synchronicznie. Szczeg\u00f3lnie w przypadku wielu r\u00f3wnoleg\u0142ych klient\u00f3w czas reakcji pozostaje bardziej sta\u0142y, poniewa\u017c g\u0142\u00f3wny w\u0105tek nie przechodzi ju\u017c przez d\u0142ugie p\u0119tle zwalniania. Podej\u015bcie to oddziela zatem zarz\u0105dzanie (natychmiastowe) od zwalniania (p\u00f3\u017aniejszego), zapewniaj\u0105c w ten spos\u00f3b <strong>Op\u00f3\u017anienie<\/strong> og\u00f3lnie niski. Najwi\u0119kszy efekt dostrzegam, gdy aplikacje cz\u0119sto zast\u0119puj\u0105 lub usuwaj\u0105 du\u017ce obiekty albo korzystaj\u0105 z TTL, kt\u00f3re powoduj\u0105 wyga\u015bni\u0119cie wielu element\u00f3w jednocze\u015bnie, poniewa\u017c Lazy Free elegancko radzi sobie z tym zadaniem <strong>od\u0142\u0105czony<\/strong>.<\/p>\n\n<h2>UNLINK a DEL w praktyce<\/h2>\n\n<p>DEL usuwa klucz i zwalnia miejsce w <strong>Pierwszy plan<\/strong> wolny, co w przypadku du\u017cych struktur mo\u017ce stanowi\u0107 blokuj\u0105c\u0105 \u015bcie\u017ck\u0119 o z\u0142o\u017cono\u015bci O(N). UNLINK natychmiast usuwa odno\u015bnik, przekazuj\u0105c zadanie zwolnienia pami\u0119ci do <strong>lazyfree<\/strong> i ko\u0144czy cz\u0119\u015b\u0107 administracyjn\u0105 bez czasu oczekiwania. W obci\u0105\u017ceniach produkcyjnych celowo u\u017cywam UNLINK dla du\u017cych kluczy, podczas gdy DEL wystarcza w przypadku ma\u0142ych, trywialnych warto\u015bci. W po\u0142\u0105czeniu z prze\u0142\u0105cznikami lazyfree mog\u0119 okre\u015bli\u0107, \u017ce r\u00f3wnie\u017c \u015bcie\u017cki usuwania po stronie serwera, wyga\u015bni\u0119cia lub eksmisje przebiegaj\u0105 asynchronicznie. W ten spos\u00f3b redukuj\u0119 szczyty obci\u0105\u017cenia, utrzymuj\u0119 bardziej stabiln\u0105 przepustowo\u015b\u0107 i zapewniam sobie lepsz\u0105 <strong>Czasy reakcji<\/strong>. Poni\u017csza tabela przedstawia te r\u00f3\u017cnice w skondensowanej formie, aby u\u0142atwi\u0107 wyb\u00f3r polecenia i wyja\u015bni\u0107 typowe kompromisy.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Aspekt<\/th>\n      <th>DEL<\/th>\n      <th>UNLINK<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Wp\u0142yw w\u0105tku<\/td>\n      <td>Zatwierdzenie w w\u0105tku g\u0142\u00f3wnym, potencjalnie blokuj\u0105ce<\/td>\n      <td>Wypuszczanie w w\u0105tkach dzia\u0142aj\u0105cych w tle, bez blokowania<\/td>\n    <\/tr>\n    <tr>\n      <td>Z\u0142o\u017cono\u015b\u0107 czasowa<\/td>\n      <td>O(N) dla du\u017cych struktur<\/td>\n      <td>O(1) dla zarz\u0105dzania, udost\u0119pnienie p\u00f3\u017aniej<\/td>\n    <\/tr>\n    <tr>\n      <td>Typowe zastosowanie<\/td>\n      <td>Ma\u0142e ci\u0105gi znak\u00f3w, rzadkie operacje usuwania<\/td>\n      <td>Du\u017ce listy\/zbiory\/hasy\/ZSET-y, cz\u0119ste operacje usuwania<\/td>\n    <\/tr>\n    <tr>\n      <td>Wp\u0142yw na op\u00f3\u017anienia<\/td>\n      <td>Mo\u017cliwe s\u0105 skoki przy du\u017cych klawiszach<\/td>\n      <td>Mniejsze skoki, bardziej r\u00f3wnomierny rozk\u0142ad<\/td>\n    <\/tr>\n    <tr>\n      <td>Interakcja z opcjami<\/td>\n      <td>Niezale\u017cnie od prze\u0142\u0105cznik\u00f3w lazyfree<\/td>\n      <td>Dzia\u0142a w zgodzie z opcjami lazyfree<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/EffizienteSpeicherfreigabe1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Konfiguracja: prawid\u0142owe ustawienie opcji lazyfree<\/h2>\n\n<p>Steruj\u0119 dzia\u0142aniem za pomoc\u0105 pi\u0119ciu prze\u0142\u0105cznik\u00f3w: <strong>lazyfree-lazy-eviction<\/strong>, lazyfree-lazy-expire, lazyfree-lazy-server-del, lazyfree-lazy-user-del oraz lazyfree-lazy-user-flush. W przypadku obci\u0105\u017ce\u0144 z du\u017c\u0105 liczb\u0105 warto\u015bci TTL w\u0142\u0105czam opcj\u0119 lazyfree-lazy-expire, aby wygasaj\u0105ce klucze nie zajmowa\u0142y <strong>W\u0105tek g\u0142\u00f3wny<\/strong> obci\u0105\u017caj\u0105. Do automatycznego zwalniania pami\u0119ci przy osi\u0105gni\u0119ciu warto\u015bci Maxmemory u\u017cywam lazyfree-lazy-eviction, co wyr\u00f3wnuje operacje eviction i sprawia, \u017ce czasy odpowiedzi s\u0105 \u0142atwiejsze do zaplanowania. W przypadku skrypt\u00f3w lub operacji wewn\u0119trznych serwera pomocne jest narz\u0119dzie lazyfree-lazy-server-del, natomiast lazyfree-lazy-user-del oddziela moje r\u0119czne operacje usuwania. Przed wdro\u017ceniem zawsze sprawdzam strategi\u0119 zarz\u0105dzania pami\u0119ci\u0105 i odsy\u0142am do materia\u0142\u00f3w pomocniczych, takich jak <a href=\"https:\/\/webhosting.de\/pl\/redis-zarzadzanie-pamiecia-optymalna-konfiguracja-pamieci-wydajnosc-pamiec-podreczna\/\">Zarz\u0105dzanie pami\u0119ci\u0105 w Redis<\/a>, aby skutki w zakresie fragmentacji i obci\u0105\u017cenia by\u0142y jasne. W ten spos\u00f3b ustawiam prze\u0142\u0105czniki w spos\u00f3b celowy i zapobiegam skutkom ubocznym wynikaj\u0105cym z nieodpowiednich <strong>Ustawienia<\/strong>.<\/p>\n\n<h2>Kiedy w\u0142\u0105czam funkcj\u0119 \u201eLazy Free\u201d<\/h2>\n\n<p>W\u0142\u0105czam funkcj\u0119 \u201eLazy Free\u201d, gdy tylko pojedyncze du\u017ce klucze <strong>Op\u00f3\u017anienie<\/strong> znacznie zwi\u0119kszy\u0107 obci\u0105\u017cenie lub spowodowa\u0107 w\u0105skie gard\u0142a w wyniku szczyt\u00f3w operacji usuwania. W pami\u0119ciach podr\u0119cznych z cz\u0119stymi zast\u0105pieniami lub w magazynach sesji o dynamicznej wielko\u015bci podej\u015bcie to sprawdza si\u0119 znakomicie. Znacznie korzystaj\u0105 na tym r\u00f3wnie\u017c wzorce przypominaj\u0105ce kolejki, w kt\u00f3rych du\u017ce listy znikaj\u0105 fragmentami. R\u00f3wnie\u017c w przypadku obci\u0105\u017ce\u0144 z wieloma wyga\u015bni\u0119ciami w ci\u0105gu dnia preferuj\u0119 asynchroniczne zwolnienie, aby aplikacja <strong>responsywny<\/strong> pozostaje. W mniej dynamicznych scenariuszach z niewielkimi obiektami korzy\u015bci s\u0105 mniejsze, ale aktywacja tej funkcji zazwyczaj nie szkodzi, o ile zasoby serwera s\u0105 odpowiednio wymiarowane. Ostatecznie decyduj\u0105ce znaczenie ma pomiar pod obci\u0105\u017ceniem, a nie przeczucie, i w\u0142a\u015bnie w tym zakresie monitorowanie dostarcza cennych <strong>Uwagi<\/strong>.<\/p>\n\n<h2>Zrozumienie monitorowania i metryk<\/h2>\n\n<p>\u015aledz\u0119 wska\u017aniki, kt\u00f3re pokazuj\u0105, ile obiekt\u00f3w jest przetwarzanych asynchronicznie <strong>Zwolnienie<\/strong> ile zada\u0144 czeka w kolejce i ile z nich zosta\u0142o ju\u017c zrealizowanych. Je\u015bli kolejka powi\u0119ksza si\u0119 przez d\u0142u\u017cszy czas, cz\u0119sto wynika to z obecno\u015bci bardzo du\u017cych kluczy lub zbyt du\u017cej liczby r\u00f3wnoczesnych \u015bcie\u017cek usuwania. Nast\u0119pnie sprawdzam, czy mog\u0119 bardziej ukierunkowanie wykorzysta\u0107 funkcj\u0119 UNLINK, dostosowa\u0107 struktury danych lub wyr\u00f3wna\u0107 fale TTL. Dodatkowo koreluj\u0119 percentyle op\u00f3\u017anie\u0144 z licznikami, aby sprawdzi\u0107, czy zadania w tle wyg\u0142adzaj\u0105 czasy odpowiedzi. Je\u015bli obci\u0105\u017cenie w\u0105tk\u00f3w dzia\u0142aj\u0105cych w tle pozostaje stale wysokie, analizuj\u0119 rezerwy mocy obliczeniowej procesora, zachowanie pami\u0119ci oraz cykle zwalniania pami\u0119ci. W ten spos\u00f3b wcze\u015bnie rozpoznaj\u0119, czy funkcja Lazy Free dzia\u0142a prawid\u0142owo, czy te\u017c <strong>Projekt<\/strong>- Kwestia ta musi zosta\u0107 rozwi\u0105zana.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/redis-lazy-free-efficient-bg-6421.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wp\u0142yw na wydajno\u015b\u0107 i typowe przeszkody<\/h2>\n\n<p>Lazy Free przenosi prac\u0119 z <strong>Pierwszy plan<\/strong> w tle, co ogranicza zator, ale nie eliminuje ca\u0142kowicie czasu procesora. Gdy usuwam wiele du\u017cych obiekt\u00f3w w kr\u00f3tkich odst\u0119pach czasu, suma operacji zwolnienia pami\u0119ci mo\u017ce chwilowo wzrosn\u0105\u0107 i zak\u0142\u00f3ci\u0107 dzia\u0142anie innych zada\u0144 w tle. Dlatego rozk\u0142adam masowe usuwanie, sprawdzam cz\u0119stotliwo\u015b\u0107 zdarze\u0144 TTL i zapobiegam falom obci\u0105\u017cenia poprzez lepsze <strong>Planowanie<\/strong>. Zwracam r\u00f3wnie\u017c uwag\u0119 na fragmentacj\u0119 pami\u0119ci, kt\u00f3ra mo\u017ce powsta\u0107 w wyniku szybkiego tworzenia i zwalniania du\u017cych blok\u00f3w. W takich sytuacjach pomocne jest dok\u0142adne przyjrzenie si\u0119 statystykom alokatora, opcjom defragmentacji oraz rozmiarom struktur danych. Kto zna te zale\u017cno\u015bci, ten wykorzystuje \u201elazy free\u201d jako pot\u0119\u017cne narz\u0119dzie bez negatywnych <strong>Skutki uboczne<\/strong>.<\/p>\n\n<h2>Wsp\u00f3\u0142dzia\u0142anie z funkcjami Evictions i TTL<\/h2>\n\n<p>W programie Maxmemory steruje <strong>Eksmisja<\/strong> kt\u00f3re klucze maj\u0105 zosta\u0107 usuni\u0119te, a algorytm \u201elazyfree-lazy-eviction\u201d decyduje, czy zwolnienie miejsca nast\u0105pi asynchronicznie. W konfiguracjach ze \u015bcis\u0142ym limitem pami\u0119ci RAM zapewnia to bardziej wyr\u00f3wnane czasy reakcji, poniewa\u017c usuwanie starych danych nie spowalnia pracy g\u0142\u00f3wnego w\u0105tku. Dostosowuj\u0119 polityk\u0119 usuwania danych do strategii TTL, tak aby dane cz\u0119sto u\u017cywane pozostawa\u0142y w pami\u0119ci, a rzadko u\u017cywane tre\u015bci by\u0142y usuwane w spos\u00f3b ukierunkowany. Osoby planuj\u0105ce usuwanie danych skorzystaj\u0105 z rzetelnego przegl\u0105du, takiego jak <a href=\"https:\/\/webhosting.de\/pl\/strategia-usuwania-danych-z-pamieci-podrecznej-w-redis\/\">Strategie eksmisji<\/a>, aby w\u0142a\u015bciwie oceni\u0107 zachowanie i szczyty obci\u0105\u017cenia. W po\u0142\u0105czeniu z UNLINK sprzyja to wyra\u017anemu rozdzieleniu: zarz\u0105dzanie od razu, udost\u0119pnianie p\u00f3\u017aniej, bardziej stabilne <strong>Odpowiedzi<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/modern_tech_office_night_4721.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Lazy Free i trwa\u0142o\u015b\u0107 (RDB\/AOF)<\/h2>\n\n<p>Tworzenie migawek RDB i przepisywanie plik\u00f3w AOF odbywa si\u0119 za pomoc\u0105 <strong>Widelec<\/strong> w oddzielnych procesach, podczas gdy g\u0142\u00f3wny w\u0105tek obs\u0142uguje \u017c\u0105dania. Lazy Free nie zak\u0142\u00f3ca tego przebiegu, ale mo\u017ce wp\u0142yn\u0105\u0107 na obci\u0105\u017cenie, je\u015bli wiele zwolnie\u0144 odbywa si\u0119 r\u00f3wnolegle. Dlatego monitoruj\u0119 czasy operacji RDB\/AOF oraz przepustowo\u015b\u0107 wej\u015bcia\/wyj\u015bcia, aby unikn\u0105\u0107 nieoczekiwanych skutk\u00f3w ubocznych. Osoby konfiguruj\u0105ce trwa\u0142o\u015b\u0107 danych znajd\u0105 w zwi\u0119z\u0142ej <a href=\"https:\/\/webhosting.de\/pl\/redis-trwalosc-danych-rdb-aof-hosting-serwer-instrukcja\/\">Instrukcja obs\u0142ugi RDB\/AOF<\/a> przydatne wskaz\u00f3wki dotycz\u0105ce w\u0142a\u015bciwego wyboru. Wa\u017cne jest, abym przed podj\u0119ciem zdecydowanych dzia\u0142a\u0144 w zakresie udost\u0119pniania danych zwr\u00f3ci\u0142 uwag\u0119 na bezpiecze\u0144stwo danych, szybko\u015b\u0107 zapisu oraz wielko\u015b\u0107 zbior\u00f3w danych <strong>zsynchronizuj<\/strong>.<\/p>\n\n<h2>Praktyczny przewodnik: Lista kontrolna dotycz\u0105ca migracji i wdro\u017cenia<\/h2>\n\n<p>Rozpoczynam prac\u0119 w \u015brodowisku testowym z reprezentatywnymi <strong>Dane<\/strong> i najpierw w\u0142\u0105czam opcj\u0119 `lazyfree-lazy-user-del`, aby oddzieli\u0107 r\u0119czne \u015bcie\u017cki usuwania. Nast\u0119pnie mierz\u0119 percentyle op\u00f3\u017anie\u0144, przepustowo\u015b\u0107 i obci\u0105\u017cenie procesora, zanim w\u0142\u0105cz\u0119 prze\u0142\u0105czniki `expire` i `eviction`. Na ka\u017cdym etapie sprawdzam liczniki oczekuj\u0105cych operacji zwolnienia pami\u0119ci i por\u00f3wnuj\u0119 je z obci\u0105\u017ceniem zapyta\u0144 oraz zmianami w wykorzystaniu pami\u0119ci. Je\u015bli wska\u017aniki pozostaj\u0105 w normie, stopniowo rozszerzam wdro\u017cenie na kolejne w\u0119z\u0142y. W razie problem\u00f3w ponownie ograniczam dzia\u0142anie prze\u0142\u0105cznik\u00f3w, dostosowuj\u0119 struktury danych i \u0142agodz\u0119 fale usuni\u0119\u0107 poprzez mniejsze partie. W ten spos\u00f3b zachowuj\u0119 zdolno\u015b\u0107 do dzia\u0142ania, ograniczam ryzyko i osi\u0105gam niezawodne <strong>Wygrane<\/strong> w zakresie czasu reakcji.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/redis_lazyfree_schreibtisch_3851.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zachowanie pami\u0119ci i fragmentacja<\/h2>\n\n<p>Zwalnianie asynchroniczne odci\u0105\u017ca <strong>W\u0105tek g\u0142\u00f3wny<\/strong>, jednak alokator musi faktycznie zwraca\u0107 lub ponownie wykorzystywa\u0107 te bloki. Dlatego obserwuj\u0119 stosunek pami\u0119ci zaj\u0119tej do pami\u0119ci zarezerwowanej przez alokator, aby na czas wykry\u0107 fragmentacj\u0119. Je\u015bli powstaje wiele du\u017cych, kr\u00f3tkotrwa\u0142ych struktur, rozk\u0142adam zwolnienia w czasie, aby alokator m\u00f3g\u0142 pracowa\u0107 bardziej r\u00f3wnomiernie. Ponadto sprawdzam, czy rozmiary kontener\u00f3w s\u0105 dostosowane do wzorc\u00f3w u\u017cytkowania, na przyk\u0142ad poprzez utrzymywanie mniejszych rozmiar\u00f3w skr\u00f3t\u00f3w lub ZSET-\u00f3w. W pojedynczych przypadkach pomocna jest defragmentacja, jednak traktuj\u0119 j\u0105 jako uzupe\u0142nienie, a nie podstawowe rozwi\u0105zanie. <strong>Pomiar<\/strong>.<\/p>\n\n<h2>Przyk\u0142ady i wyniki por\u00f3wnawcze z praktyki<\/h2>\n\n<p>W aplikacjach wykorzystuj\u0105cych strumienie zdarze\u0144 i pami\u0119ci podr\u0119czne oparte na TTL szczytowe op\u00f3\u017anienia cz\u0119sto znacznie si\u0119 zmniejszaj\u0105, gdy tylko zastosuje si\u0119 UNLINK i odpowiednie <strong>lazyfree<\/strong>-prze\u0142\u0105czniki s\u0105 aktywne. Obraz ten jest szczeg\u00f3lnie wyra\u017any, gdy du\u017ce klucze s\u0105 regularnie zast\u0119powane, poniewa\u017c cz\u0119\u015b\u0107 administracyjna zostaje natychmiast zako\u0144czona. Pomiary przeprowadzone pod obci\u0105\u017ceniem syntetycznym pokazuj\u0105, \u017ce przepustowo\u015b\u0107 pozostaje bardziej sta\u0142a, a skrajne warto\u015bci czas\u00f3w odpowiedzi wyst\u0119puj\u0105 rzadziej. W przypadku silnie zmiennych ilo\u015bci danych powstaje bardziej stabilny profil, co ogranicza warto\u015bci odstaj\u0105ce i zauwa\u017calnie poprawia komfort u\u017cytkowania. Efekty te zawsze analizuj\u0119 \u0142\u0105cznie z szeregami czasowymi dotycz\u0105cymi obci\u0105\u017cenia procesora i pami\u0119ci, aby unikn\u0105\u0107 <strong>Pozorna optymalizacja<\/strong> powstaje.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/speicherfreigabe-serverraum-8347.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kompatybilno\u015b\u0107, ustawienia domy\u015blne i bezpieczna aktywacja<\/h2>\n<p>W praktyce zak\u0142adam, \u017ce prze\u0142\u0105czniki \u201elazyfree\u201d <em>domy\u015blnie wy\u0142\u0105czone<\/em> i aktywuj\u0119 je selektywnie dla poszczeg\u00f3lnych \u015bcie\u017cek. Zapobiega to nieoczekiwanym sytuacjom podczas aktualizacji i pozwala zmierzy\u0107 efekty. Sprawdzam r\u00f3wnie\u017c wersj\u0119 Redis, poniewa\u017c szczeg\u00f3\u0142y, takie jak warianty FLUSH* (<code>FLUSHDB ASYNC<\/code>, <code>FLUSHALL ASYNC<\/code>) oraz \u015bcie\u017cki usuwania po stronie serwera sta\u0142y si\u0119 \u0142atwe w zarz\u0105dzaniu dopiero w p\u00f3\u017aniejszych wersjach. Dla zespo\u0142\u00f3w stosuj\u0105cych rygorystyczne procedury kontroli zmian dokumentuj\u0119 ustawienia domy\u015blne, stan docelowy (kt\u00f3re \u015bcie\u017cki powinny by\u0107 asynchroniczne?) oraz kryteria akceptacji (np. op\u00f3\u017anienie P99 poni\u017cej warto\u015bci docelowej, brak trwa\u0142ego wzrostu <em>obiekty oczekuj\u0105ce<\/em>), zanim prze\u0142\u0105cz\u0119 si\u0119 na transmisj\u0119 na \u017cywo.<\/p>\n\n<h2>Replikacja, klastry i prze\u0142\u0105czanie awaryjne<\/h2>\n<p>W konfiguracjach z replikacj\u0105 i topologiach CLUSTER dbam o to, aby funkcja Lazy Free <strong>Semantyka<\/strong> bez zmian: klucze natychmiast znikaj\u0105 z przestrzeni kluczy \u2013 niezale\u017cnie od tego, kiedy pami\u0119\u0107 zostanie faktycznie zwolniona. Ma to znaczenie dla aplikacji, kt\u00f3re oczekuj\u0105, \u017ce klucz \u201ezniknie\u201c wkr\u00f3tce po operacji usuni\u0119cia. Na replikach obserwuj\u0119 obci\u0105\u017cenie, gdy wiele zwolnie\u0144 pami\u0119ci odbywa si\u0119 r\u00f3wnolegle (np. po zbiorczym usuwaniu danych na serwerze g\u0142\u00f3wnym). Unikam du\u017cych fal usuwania danych bezpo\u015brednio przed planowanym prze\u0142\u0105czeniem awaryjnym, aby <strong>Prace przygotowawcze<\/strong> nie wkracza niepotrzebnie w faz\u0119 prze\u0142\u0105czania. W przypadku pe\u0142nej resynchronizacji i odbudowy danych zyskuj\u0119 na tym, \u017ce w\u0119ze\u0142 mo\u017ce asynchronicznie zwolni\u0107 stary zestaw danych podczas jego opr\u00f3\u017cniania \u2013 dzi\u0119ki temu w\u0105tek pozostaje odci\u0105\u017cony, podczas gdy replikacja przejmuje dane.<\/p>\n\n<h2>Skrypty, transakcje i potoki<\/h2>\n<p>W skryptach Lua i transakcjach MULTI\/EXEC konsekwentnie stosuj\u0119 <code>UNLINK<\/code>, gdy usuwane s\u0105 du\u017ce klucze. Jest to szczeg\u00f3lnie pomocne, gdy skrypty okresowo wykonuj\u0105 operacje porz\u0105dkuj\u0105ce. W przypadku masowego usuwania \u0142\u0105cz\u0119 <code>SCAN<\/code>iteracja oparta na z <code>UNLINK<\/code> w <strong>Partie<\/strong> oraz potok, aby ograniczy\u0107 zar\u00f3wno obci\u0105\u017cenie sieci, jak i szczytowe warto\u015bci op\u00f3\u017anie\u0144:<\/p>\n<pre><code># Przyk\u0142ad: stopniowe, asynchroniczne usuwanie za pomoc\u0105 potoku\nSCAN 0 MATCH session:* COUNT 1000\n# ... Zbieranie kluczy i wysy\u0142anie ich partiami po 200 za pomoc\u0105 potoku UNLINK\nUNLINK session:... session:... ...<\/code><\/pre>\n<p>Unikam <code>KLUCZE<\/code> do przyk\u0142adowych usuni\u0119\u0107 w produkcji; <code>SCAN<\/code> Umiarkowane warto\u015bci COUNT oraz roz\u0142o\u017cenie w czasie pozwalaj\u0105 zachowa\u0107 responsywno\u015b\u0107 g\u0142\u00f3wnego w\u0105tku. Dodatkowo ograniczam r\u00f3wnoleg\u0142o\u015b\u0107 po stronie klienta, aby kolejka asynchronicznych zatwierdze\u0144 nie ros\u0142a w spos\u00f3b niekontrolowany.<\/p>\n\n<h2>Konkretne wska\u017aniki i diagnostyka<\/h2>\n<p>Aby dokona\u0107 rzetelnej oceny, \u0142\u0105cz\u0119 perspektyw\u0119 latencji i pami\u0119ci:<\/p>\n<ul>\n  <li><strong>lazyfree_pending_objects<\/strong>: Podstawowy wska\u017anik dotycz\u0105cy kolejki zezwole\u0144 asynchronicznych. Sta\u0142y wzrost wskazuje na zbyt du\u017ce obiekty lub zbyt agresywne fale usuwania.<\/li>\n  <li><strong>expired_keys<\/strong> oraz <strong>evicted_keys<\/strong>: Wysokie warto\u015bci wskazuj\u0105 na obci\u0105\u017cenie zwi\u0105zane z TTL lub Maxmemory; za pomoc\u0105 prze\u0142\u0105cznik\u00f3w lazyfree mo\u017cna oddzieli\u0107 \u015bcie\u017cki.<\/li>\n  <li><strong>used_memory_rss<\/strong> oraz <strong>mem_fragmentation_ratio<\/strong>: Pokaza\u0107, czy alokator nad\u0105\u017ca i jak du\u017ce jest rozdrobnienie.<\/li>\n  <li><strong>operacji_chwilowych_na_sekund\u0119<\/strong> oraz percentyle op\u00f3\u017anienia: sprawd\u017a, czy przepustowo\u015b\u0107 pozostaje stabilna, a szczyty si\u0119 wyr\u00f3wnuj\u0105.<\/li>\n<\/ul>\n<p>W celu analizy przyczyn korzystam z wykres\u00f3w czasowych: koreluj\u0105 <em>obiekty oczekuj\u0105ce<\/em> W przypadku fal TTL, eksmisji lub usuwania partii danych, skupiam si\u0119 na wyr\u00f3wnywaniu obci\u0105\u017cenia lub wielko\u015bciach partii. Je\u015bli op\u00f3\u017anienie pozostaje stabilne, ale wykorzystanie RSS ro\u015bnie, sprawdzam zachowanie alokatora i defragmentacj\u0119.<\/p>\n\n<h2>Alokator, defragmentacja i dyscyplina pami\u0119ci<\/h2>\n<p>Lazy Free \u0142agodzi blokady, ale nie zast\u0119puje porz\u0105dnego <strong>Model pami\u0119ci<\/strong>. Dbam o sp\u00f3jno\u015b\u0107 struktur danych (np. p\u0142askie skr\u00f3ty zamiast zagnie\u017cd\u017conych, rzadko u\u017cywanych p\u00f3l), unikam obiekt\u00f3w o gwa\u0142townie rosn\u0105cych rozmiarach i dziel\u0119 du\u017ce \u0142adunki danych, je\u015bli pozwala na to wzorzec dost\u0119pu. W \u015brodowiskach o silnie zmiennych ilo\u015bciach danych warto stosowa\u0107 defragmentacj\u0119 \u2013 w odpowiednich dawkach. W\u0142\u0105czam j\u0105 tylko wtedy, gdy fragmentacja faktycznie w mierzalny spos\u00f3b spowalnia dzia\u0142anie, i obserwuj\u0119, czy nie koliduje z zadaniami typu \u201elazy-free\u201d. Kluczem jest r\u00f3wnowaga: nie nale\u017cy obs\u0142ugiwa\u0107 wszystkiego asynchronicznie i jednocze\u015bnie w spos\u00f3b fragmentowany, lecz z <strong>Punkty pomiarowe<\/strong> kontrolowa\u0107.<\/p>\n\n<h2>Przypadki skrajne i semantyka<\/h2>\n<p>Wa\u017cne jest wyra\u017ane rozr\u00f3\u017cnienie mi\u0119dzy widoczno\u015bci\u0105 a udost\u0119pnianiem plik\u00f3w: Zgodnie z <code>UNLINK<\/code> klucz staje si\u0119 natychmiast niewidoczny, a pami\u0119\u0107 zostanie zwolniona p\u00f3\u017aniej. W konfiguracjach z bardzo ograniczon\u0105 warto\u015bci\u0105 `MaxMemory` mo\u017ce to oznacza\u0107, \u017ce dodawanie nowych danych b\u0119dzie tymczasowo bardziej nara\u017cone na operacje usuwania, dop\u00f3ki proces zwalniania pami\u0119ci nie nadrobi zaleg\u0142o\u015bci. Rozwi\u0105zuj\u0119 ten problem poprzez synchronizacj\u0119 fal usuwania, ograniczanie rozmiaru nowych wstawie\u0144 lub asynchronizacj\u0119 operacji usuwania, aby nie zatyka\u0107 g\u0142\u00f3wnego w\u0105tku. Ponadto zwracam uwag\u0119 na pojedyncze, wyj\u0105tkowo du\u017ce klucze (<em>Klucze w kszta\u0142cie s\u0142onia<\/em>) mog\u0105 samodzielnie zdominowa\u0107 kolejk\u0119 t\u0142a \u2013 cz\u0119sto jest to <strong>Dekompozycja obiektu<\/strong> lepsze rozwi\u0105zanie.<\/p>\n\n<h2>Wytyczne operacyjne i strategia przywracania poprzedniego stanu<\/h2>\n<p>W odniesieniu do \u015brodowisk produkcyjnych formu\u0142uj\u0119 proste wytyczne:<\/p>\n<ul>\n  <li><strong>Bramki funkcyjne<\/strong>: Aktywowa\u0107 poszczeg\u00f3lne prze\u0142\u0105czniki lazyfree, udokumentowa\u0107 je i poprze\u0107 wska\u017anikami.<\/li>\n  <li><strong>Limity stawek<\/strong>: Nale\u017cy okre\u015bli\u0107 wielko\u015b\u0107 i cz\u0119stotliwo\u015b\u0107 partii, aby \u017cadna fala zatwierdze\u0144 nie przeci\u0105\u017cy\u0142a systemu.<\/li>\n  <li><strong>Cofni\u0119cie<\/strong>: W przypadku dalszego wzrostu <em>obiekty oczekuj\u0105ce<\/em> lub w przypadku warto\u015bci odstaj\u0105cych zwi\u0105zanych z op\u00f3\u017anieniem celowo cofn\u0105\u0107 ostatnio aktywowane prze\u0142\u0105czniki.<\/li>\n  <li><strong>Fazy obci\u0105\u017cenia<\/strong>: Planowa\u0107 aktywacje poza newralgicznymi przedzia\u0142ami czasowymi ruchu i monitorowa\u0107 je za pomoc\u0105 przygotowanych pulpit\u00f3w nawigacyjnych.<\/li>\n<\/ul>\n<p>Dzi\u0119ki jasnym zasadom dzia\u0142ania Lazy Free pozostaje narz\u0119dziem, kt\u00f3rego dzia\u0142anie da si\u0119 przewidzie\u0107, a nie \u201eczarn\u0105 skrzynk\u0105\u201d, kt\u00f3ra od czasu do czasu sprawia niespodzianki.<\/p>\n\n<h2>Praktyczne przyk\u0142ady: selektywne i planowe sprz\u0105tanie<\/h2>\n<p>\u015awiadomie wybieram jeden z trzech tryb\u00f3w kasowania, w zale\u017cno\u015bci od pilno\u015bci i rozmiaru:<\/p>\n<ul>\n  <li><strong>Natychmiast, ma\u0142y<\/strong>: <code>DEL<\/code> w przypadku bardzo ma\u0142ych warto\u015bci, kt\u00f3re rzadko s\u0105 usuwane \u2013 zminimalizowa\u0107 obci\u0105\u017cenie systemowe.<\/li>\n  <li><strong>Natychmiast, du\u017ce<\/strong>: <code>UNLINK<\/code> w przypadku kluczy o du\u017cych rozmiarach \u2013 natychmiastowe wy\u0142\u0105czenie widoczno\u015bci, przeniesienie uprawnie\u0144.<\/li>\n  <li><strong>Zaplanowane, na masow\u0105 skal\u0119<\/strong>: <code>SCAN<\/code> + <code>UNLINK<\/code> w partiach \u2013 deterministycznie, z mo\u017cliwo\u015bci\u0105 pracy w trybie potokowym, z mechanizmem backoff w przypadku obci\u0105\u017cenia.<\/li>\n<\/ul>\n<p>W przypadku pami\u0119ci podr\u0119cznych, w kt\u00f3rych dominuje TTL, dodatkowo celowo ustawiam <em>Jitter<\/em> (nale\u017cy nieco roz\u0142o\u017cy\u0107 czasy wyga\u015bni\u0119cia), aby wyga\u015bni\u0119cia nie powodowa\u0142y wyzwalania ca\u0142ych podzbior\u00f3w w ci\u0105gu jednej sekundy. Zmniejsza to prawdopodobie\u0144stwo falowych zwolnie\u0144, nawet je\u015bli \u015bcie\u017cki wyga\u015bni\u0119cia s\u0105 zsynchronizowane asynchronicznie.<\/p>\n\n<h2>Kr\u00f3tko i na temat<\/h2>\n\n<p><strong>Redis \u2013 Lazy Free<\/strong> oddziela zarz\u0105dzanie od zwalniania pami\u0119ci, nie obci\u0105\u017ca g\u0142\u00f3wnego w\u0105tku i t\u0142umi skoki op\u00f3\u017anie\u0144 w przypadku du\u017cych struktur danych. U\u017cywam UNLINK do du\u017cych kluczy, prze\u0142\u0105czam \u015bcie\u017cki wyga\u015bni\u0119cia i usuni\u0119cia asynchronicznie oraz uwa\u017cnie obserwuj\u0119 odpowiednie liczniki. Dzi\u0119ki przemy\u015blanej konfiguracji, ostro\u017cnemu wdra\u017caniu i jasno zdefiniowanym punktom pomiarowym technika ta zapewnia sta\u0142e czasy odpowiedzi pod obci\u0105\u017ceniem. Istniej\u0105 jednak ograniczenia: nie zast\u0119puje to dobrego modelu danych, przemy\u015blanych strategii TTL ani odpowiednich rozmiar\u00f3w kontener\u00f3w. Kto we\u017amie te kwestie do serca, z pewno\u015bci\u0105 wydob\u0119dzie z Redis wi\u0119cej. <strong>Wydajno\u015b\u0107<\/strong> bez ryzyka wyst\u0105pienia niespodzianek w codziennej dzia\u0142alno\u015bci.<\/p>","protected":false},"excerpt":{"rendered":"<p>Redis Lazy Free ogranicza blokady i poprawia wydajno\u015b\u0107 dzi\u0119ki asynchronicznemu zwalnianiu pami\u0119ci w tle.<\/p>","protected":false},"author":1,"featured_media":20939,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-20946","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"123","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Redis Lazy Free","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20939","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=20946"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20946\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20939"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}