Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 29611|Отговор: 2

[Редис] Redis използва Lua скрипти за подробни обяснения

[Копирай линк]
Публикувано в 30.04.2021 г. 15:42:57 ч. | | | |
Относно redis, всички често го използват, а най-често използваният сценарий е кеширането на данни.

преглед

Разлика в устойчивостта на Redis между RDB и AOF
https://www.itsvse.com/thread-9555-1-1.html

Инсталацията на Docker работи с кеша на Redis
https://www.itsvse.com/thread-8995-1-1.html

Примери обясняват какво представляват проникването в кеша на Redis, лавината на кеша и разбиването на кеша
https://www.itsvse.com/thread-8968-1-1.html

redis wildcards за масово изтриване на ключове
https://www.itsvse.com/thread-7957-1-1.html

Урок за инсталация на CentOS 7 Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Инсталирай разширението redis под php 5.5.7 под CentOS
https://www.itsvse.com/thread-7200-1-1.html

Колко ключове могат да се съхраняват в Redis инстанция и какви са максималните ключове и стойности?
https://www.itsvse.com/thread-6848-1-1.html

Проблемът с редис китайски не може да бъде показан правилно
https://www.itsvse.com/thread-5032-1-1.html

Redis позволява отдалечен достъп
https://www.itsvse.com/thread-5011-1-1.html

Windows не успява да стартира услугата Redis, грешка 1067: Процесът приключва неочаквано.
https://www.itsvse.com/thread-5010-1-1.html

CentOS инсталира Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis настройва отдалечена връзка и паролите за достъп
https://www.itsvse.com/thread-4101-1-1.html

Redis изпразва кеша за данни
https://www.itsvse.com/thread-4027-1-1.html

Конфигурация за устойчивост на Redis и изключена персистентност
https://www.itsvse.com/thread-4012-1-1.html

Разликата между save и bgsave в redis
https://www.itsvse.com/thread-4010-1-1.html

Редис има два метода и принципа на персистентност
https://www.itsvse.com/thread-4009-1-1.html

Redis има три начина за начало
https://www.itsvse.com/thread-4008-1-1.html

Методът на Redis за скриване на прозорците на командния ред
https://www.itsvse.com/thread-2988-1-1.html

Проблем с хеш стойността на Redis хеш
https://www.itsvse.com/thread-2587-1-1.html

5 неща, които трябва да знаете, преди да използвате Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis променя номера на порта по подразбиране и задава паролата за достъп
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-битово изтегляне, официален адрес за изтегляне
https://www.itsvse.com/thread-2576-1-1.html
Започвайки с redis 2.6.0, redis има вграден Lua интерпретатор и предоставя команда за оценка на Lua скриптовете за разбор.

Синтаксис: eval script numkeys keys args

Параметри:

eval — Redis предоставя команди за парсиране на lua скрипта

Скрипт — Lua Script

numkeys — Определя броя на ключовете в набора от параметри на ключови имена

ключове — Наборът от параметри на ключови имена, представен от масива на глобалната променлива KEYS, започващ с индекс 1

args — Набор от ключови параметри, представени чрез масив от глобални променливи ARGV, започващи с индекс 1


Предимства на използването на Lua в Redis

Намалете натоварването на мрежата. Могат да се изпращат множество заявки едновременно под формата на скриптове за намаляване на мрежовото забавяне
Атомна манипулация. Redis изпълнява целия скрипт като цяло, без да се добавят други команди между тях. Затова няма нужда да се притеснявате за състезателните условия и транзакции по време на процеса на скриптиране.
Възстановен. Стъпките, изпратени от клиента, постоянно се съхраняват в redis, така че другите клиенти да могат да използват скрипта повторно, без да се налага да използват код за завършване на същата логика.

Атомност на скрипта

Lua скриптовете не могат да имат времеемки операции или мъртви цикли, в противен случай redis няма да приема други команди и ще се изпълнява, за да спре изпълнението на скрипта

Redis използва един Lua интерпретатор за изпълнение на всички скриптове и гарантира, че скриптовете се изпълняват атомарно.Това означава, че когато скрипт работи, няма да се изпълняват други скриптове или redis команди! Следователно, ако текущият скрипт работи бавно, сървърът може да не успее да изпълни командата, защото е зает, например:

Всеки скрипт има максимален лимит за изпълнение, като по подразбиране стойността е 5s. Максималното време за изпълнение се контролира чрез опцията lua-time-limit в конфигурационния файл redis.conf или директно чрез използване на командите config get и config set. Когато изпълнението на скрипт достигне максималното си време за изпълнение, Redis не го прекратява активно, а извършва следните стъпки:

(1) Redis записва, че един сценарий изчерпва времето си

(2) Redis започва да приема повторно заявки от други клиенти, но приема само изпълнение на команди за унищожаване на скрипт и изключване на носейв.

(3) Ако скриптът изпълнява само операции за четене, използвайте командата за убиване на скрипта, за да спрете скрипта незабавно; Ако скриптът извърши операция за запис, само командата shutdown save/nosave може да спре сървъра и да предотврати записването на текущите данни на диска. (В този момент сървърът не работи и данните няма да бъдат запазени)


пример

Изпълнете скрипта, параметрите са 2 ключа и стойност, а командата е следната:


Deadloop скриптове при изпълнение на следния скрипт ще накара redis да не може да обработва други команди и да се заседне:

Опитайте да използвате скрипт, за да добавите данни с тип низ със следната команда:

Изпълнете някои по-сложни скриптове, ако стойността на ключа е равна на въведената стойност, след това изтрийте кеша, иначе направете каквото и да е, командата е следната:

Резултатите от изпълнението са следните:



(Край)




Предишен:.NET/C# Lock Principle Monitor предоставя подробно обяснение
Следващ:IIS DELETE PUT решение за заявка 405
 Хазяин| Публикувано в 10.05.2021 г. 9:18:34 ч. |

Входът към хиперлинк е видим.
Командата Redis Script Load се използва за добавяне на скриптов скрипт към кеша на скриптовете, но не се изпълнява веднага.

Командата EVAL също добавя скрипта към кеша на скрипта, но веднага оценява входния скрипт.

Ако даденият скрипт вече е в кеша, тогава не се предприема никакви действия.

След като скриптът бъде добавен в кеша, скриптът може да бъде извикан чрез SHA1 контролната сума на скрипта чрез командата EVALSHA. (Това също означава.)Същият скрипт изпълнява същата стойност на sha1 на всеки различен redis сървър

Скриптовете могат да останат в кеша за безкрайно време, докато SCRIPT FLUSH бъде изпълнен.



 Хазяин| Публикувано в 12.05.2021 г. 11:38:55 ч. |
Определете дали lua скриптът е в кеша


След като Redis рестартира, Lua скриптът се изчиства автоматично, няма да бъде постоянно

Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com