Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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

Wildcards redis для масового видалення ключів
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

Проблема redis Chinese не відображається коректно
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

ReIs спорожнює кеш даних
https://www.itsvse.com/thread-4027-1-1.html

Конфігурація збереження REDIS та вимкнена персистенція
https://www.itsvse.com/thread-4012-1-1.html

Різниця між збереженням і 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 і надає команду eval для розбору оцінки скриптів Lua.

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

Параметри:

eval — Redis надає команди для розбору lua-скрипту

Сценарій — lua script

numkeys — Визначає кількість ключів у наборі параметрів keyname

ключі — набір параметрів keyname, представлений глобальним масивом змінної 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 починає повторно приймати запити від інших клієнтів, але приймає лише виконання команд на знищення скриптів і nosave вимкнення.

(3) Якщо скрипт виконує лише операції читання, використайте команду знищення скрипту, щоб негайно зупинити скрипт; Якщо скрипт виконує операцію запису, лише команда shutdown save/nosave дозволена зупинити сервер і запобігти запису поточних даних на диск. (На цьому етапі сервер не працює, і дані не зберігаються)


приклад

Виконайте скрипт, параметри — 2 ключі та значення, а команда звучить так:


Deadloop-скрипти, виконання наступного скрипта призводить до того, що redis не може обробляти інші команди і застрягає:

Спробуйте використати скрипт, щоб додати дані рядка типу за допомогою наступної команди:

Виконуйте більш складні скрипти, якщо значення ключа дорівнює введеному, потім видаліть кеш, інакше робіть щось, команда виглядає так:

Результати впровадження такі:



(Кінець)




Попередній:.NET/C# Lock Principle Monitor надає детальне пояснення
Наступний:IIS DELETE PUT рішення запиту 405
 Орендодавець| Опубліковано 10.05.2021 09: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