Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 29611|Odpowiedź: 2

[Redis] Redis używa pisma Lua do szczegółowych wyjaśnień

[Skopiuj link]
Opublikowano 30.04.2021 15:42:57 | | | |
Jeśli chodzi o redis, wszyscy z niego korzystają, a najczęściej wykorzystywanym scenariuszem jest buforowanie danych.

recenzja

Różnica w trwałości Redis między RDB a AOF
https://www.itsvse.com/thread-9555-1-1.html

Instalacja Dockera uruchamia cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Przykłady wyjaśniają, czym są penetracja pamięci podręcznej Redis, lawina cache i breakdown cache
https://www.itsvse.com/thread-8968-1-1.html

Wolne karty Redis do masowego usuwania kluczy
https://www.itsvse.com/thread-7957-1-1.html

Instrukcja instalacji CentOS 7 Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Zainstaluj rozszerzenie redis w php 5.5.7 w CentOS
https://www.itsvse.com/thread-7200-1-1.html

Ile kluczy można przechowywać w instancji redis i jakie są maksymalne klucze i wartości?
https://www.itsvse.com/thread-6848-1-1.html

Problem redis Chinese nie może być odpowiednio przedstawiony
https://www.itsvse.com/thread-5032-1-1.html

Redis umożliwia zdalny dostęp
https://www.itsvse.com/thread-5011-1-1.html

Windows nie uruchamia usługi Redis, błąd 1067: Proces niespodziewanie się kończy.
https://www.itsvse.com/thread-5010-1-1.html

CentOS zainstalował Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis ustawia hasła do zdalnego połączenia i dostępu
https://www.itsvse.com/thread-4101-1-1.html

Redis opróżnia pamięć podręczną danych
https://www.itsvse.com/thread-4027-1-1.html

Konfiguracja persystencji Redis i wyłączona persystencja
https://www.itsvse.com/thread-4012-1-1.html

Różnica między zapisem a bgsave w redis
https://www.itsvse.com/thread-4010-1-1.html

Redis dwie metody i zasady trwałości
https://www.itsvse.com/thread-4009-1-1.html

Redis ma trzy sposoby na start
https://www.itsvse.com/thread-4008-1-1.html

Metoda Redis do ukrywania okien wiersza poleceń
https://www.itsvse.com/thread-2988-1-1.html

Problem wartości skrótu skrótu Redis
https://www.itsvse.com/thread-2587-1-1.html

5 rzeczy, które musisz wiedzieć przed użyciem Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modyfikuje domyślny numer portu i ustawia hasło dostępu
https://www.itsvse.com/thread-2577-1-1.html

Redis do pobrania Windows 64-bit, oficjalny adres pobrania
https://www.itsvse.com/thread-2576-1-1.html
Począwszy od redis 2.6.0, redis ma wbudowany interpreter Lua i zapewnia komendę evaluacji do analizy skryptu Lua.

Składnia: eval script numkeys keys keys args

Parametry:

eval — Redis dostarcza polecenia do analizy skryptu lua

Skrypt — Skrypt Lua

numkeys — Określa liczbę kluczy w zestawie parametrów nazw klucza

keys — Zestaw parametrów nazw klucza, reprezentowany przez globalną tablicę zmiennej KEYS, zaczynającą się od indeksu 1

args — Zbiór parametrów klucz-wartość, reprezentowany przez tablicę zmiennych globalnych ARGV, zaczynając od indeksu 1


Zalety stosowania Lua w Redis

Zmniejsz narzut sieciowy. Wiele żądań może być wysyłanych jednocześnie w formie skryptów, aby zmniejszyć opóźnienia sieci
Manipulacja atomowa. Redis wykona cały skrypt jako całość, bez żadnych innych komend wstawianych pomiędzy. Dlatego nie musisz martwić się o warunki wyścigu i transakcje podczas procesu scenariuszowego.
Przywrócony. Kroki wysyłane przez klienta są trwale przechowywane w redis, aby inni klienci mogli ponownie używać skryptu bez konieczności stosowania kodu do realizacji tej samej logiki.

Atomowość skryptu

Skrypty Lua nie mogą wykonywać czasochłonnych operacji ani martwych pętli, w przeciwnym razie redis nie zaakceptuje innych poleceń i nie wykona się, aby zatrzymać działanie skryptu

Redis używa jednego interpretera Lua do uruchamiania wszystkich skryptów i zapewnia, że skrypty są wykonywane atomowo.Oznacza to, że podczas uruchamiania skryptu nie zostaną wykonane żadne inne skrypty ani polecenia redis! Dlatego jeśli obecny skrypt działa wolno, serwer może nie być w stanie wykonać polecenia, ponieważ jest zajęty, na przykład:

Każdy skrypt ma maksymalny limit czasu wykonywania, domyślna wartość to 5s. Maksymalny czas wykonania jest kontrolowany przez opcję limitu czasu lua w pliku konfiguracyjnym redis.conf lub bezpośrednio za pomocą poleceń config get i configset. Gdy wykonanie skryptu osiągnie maksymalny czas wykonania, Redis nie kończy go aktywnie, lecz wykonuje następujące kroki:

(1) Redis rejestruje, że skrypt kończy się

(2) Redis zaczyna ponownie przyjmować żądania od innych klientów, ale akceptuje tylko wykonywanie poleceń zabijania skryptu i wyłączanie nosave.

(3) Jeśli skrypt wykonuje tylko operacje odczytu, użyj polecenia zabicia skryptu, aby natychmiast zatrzymać skrypt; Jeśli skrypt wykona operację zapisu, jedynie polecenie shutdown save/nosave może zatrzymać serwer, aby zapobiec zapisowi bieżących danych na dysku. (W tym momencie serwer jest niedostępny i dane nie zostaną zapisane)


przykład

Wykonaj skrypt, parametry to 2 klucz i wartość, a polecenie wygląda następująco:


Deadloop skrypty, uruchamianie następującego skryptu powoduje, że redis nie będzie mógł przetwarzać innych poleceń i utknie:

Spróbuj użyć skryptu, aby dodać dane typu string za pomocą następującego polecenia:

Wykonaj bardziej złożone skrypty, jeśli wartość klucza jest równa przesłanej przez nas wartości, usuń pamięć podręczną, w przeciwnym razie zrób cokolwiek, polecenie wygląda następująco:

Wyniki wdrożenia są następujące:



(Koniec)




Poprzedni:.NET/C# Lock Principle Monitor zapewnia szczegółowe wyjaśnienie
Następny:IIS DELETE PUT request 405 rozwiązanie
 Ziemianin| Opublikowano 10.05.2021 09:18:34 |

Logowanie do linku jest widoczne.
Polecenie Redis Script Load służy do dodania skryptu do pamięci podręcznej skryptu, ale nie jest wykonywane od razu.

Polecenie EVAL również dodaje skrypt do pamięci podręcznej skryptu, ale natychmiast ocenia skrypt wejściowy.

Jeśli dany skrypt jest już w pamięci podręcznej, nie podejmuje się żadnej akcji.

Po dodaniu skryptu do pamięci podręcznej, skrypt może być wywołany za pomocą sumy kontrolnej SHA1 skryptu za pomocą polecenia EVALSHA. (To również oznacza.)Ten sam skrypt wykonuje tę samą wartość sha1 na dowolnym innym serwerze redis

Skrypty mogą pozostawać w pamięci podręcznej przez nieskończony czas, aż do wykonania FLUSH SCRIPT.



 Ziemianin| Opublikowano 12.05.2021 11:38:55 |
Sprawdź, czy skrypt lua znajduje się w pamięci podręcznej


Po restarcie Redis, skrypt Lua zostaje automatycznie wyczyszczony, nie będzie trwały

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com