Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 29611|Yanıt: 2

[Redis] Redis, ayrıntılı açıklamalar için Lua betanlarını kullanır

[Bağlantıyı kopyala]
Yayınlandı 30.04.2021 15:42:57 | | | |
Redis'e gelince, herkes genellikle kullanıyor ve en çok kullanılan senaryo veri önbellekleme.

eleştiri

RDB ile AOF arasındaki Redis Sürekliliği Farkı
https://www.itsvse.com/thread-9555-1-1.html

Docker kurulumu Redis önbelleğini çalıştırıyor
https://www.itsvse.com/thread-8995-1-1.html

Örnekler, Redis önbellek penetrasyonu, önbellek çığı ve önbellek dağılımının ne olduğunu açıklar
https://www.itsvse.com/thread-8968-1-1.html

Anahtarları toplu olarak silmek için kırdas joker kartlar
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 kurulumu Redis 5.0.3 eğitimi
https://www.itsvse.com/thread-7201-1-1.html

Redis uzantısını php 5.5.7 altında CentOS altında kur
https://www.itsvse.com/thread-7200-1-1.html

Bir redis örneğinde kaç anahtar depolanabilir ve maksimum anahtarlar ve değerler nelerdir?
https://www.itsvse.com/thread-6848-1-1.html

Redis Chinese numarası düzgün şekilde gösterilemiyor
https://www.itsvse.com/thread-5032-1-1.html

Redis uzaktan erişim sağlıyor
https://www.itsvse.com/thread-5011-1-1.html

Windows, Redis servisini başlatamıyor, hata 1067: Süreç beklenmedik şekilde sonlanıyor.
https://www.itsvse.com/thread-5010-1-1.html

CentOS Redis 4.0.8'i yükledi
https://www.itsvse.com/thread-4614-1-1.html

Redis uzaktan bağlantı ve erişim şifreleri kurar
https://www.itsvse.com/thread-4101-1-1.html

Redis veri önbelleğini boşaltıyor
https://www.itsvse.com/thread-4027-1-1.html

Redis persistence yapılandırması ve kapalı persistence
https://www.itsvse.com/thread-4012-1-1.html

Redis'te save ile bgsave arasındaki fark
https://www.itsvse.com/thread-4010-1-1.html

Redis iki süreklilik yöntemi ve ilkesi
https://www.itsvse.com/thread-4009-1-1.html

Redis'in başlaması için üç yol var
https://www.itsvse.com/thread-4008-1-1.html

Komut satırı pencerelerini gizlemek için Redis yöntemi
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Değeri Problemi
https://www.itsvse.com/thread-2587-1-1.html

Redis Kullanmadan Önce Bilmeniz Gereken 5 Şey
https://www.itsvse.com/thread-2580-1-1.html

Redis, varsayılan port numarasını değiştirir ve erişim şifresini ayarlar
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit indirme, resmi indirme adresi
https://www.itsvse.com/thread-2576-1-1.html
Redis 2.6.0 ile itibaren, redis'in yerleşik bir Lua yorumlayıcısı vardır ve Lua script değerlendirmesini ayrıştırmak için bir eval komutu sağlar.

Sözdizimi: eval script numkeys keys args

Parametreler:

eval — Redis, lua bebesini ayrıştırmak için komutlar sağlar

Script — Lua Script

numkeys — Anahtar adı parametre kümesindeki anahtar sayısını belirtir

anahtarlar — Anahtar adı parametre kümesi, 1 alt indeksi ile başlayan küresel değişken KEYS dizisi ile temsil edilir

args — 1 alt indeksiyle başlayan bir global değişken dizisi ARGV ile temsil edilen bir anahtar-değer parametreleri kümesi


Redis'te Lua kullanmanın avantajları

Ağ ek yükünü azaltın. Ağ gecikmesini azaltmak için aynı anda birden fazla istek script şeklinde gönderilebilir
Atomik manipülasyon. Redis tüm betiği çalıştırır ve arada başka komut eklenmez. Bu nedenle, script sürecinde yarış koşulları ve işlemler konusunda endişelenmenize gerek yoktur.
Yeniden göreve getirildi. İstemci tarafından gönderilen ayak izleri, diğer istemcilerin aynı mantığı tamamlamak için kod kullanmadan betiği tekrar kullanabilmeleri için sürekli olarak redis olarak saklanır.

Yazı atomikliği

Lua betikleri zaman alıcı işlemlere veya ölü döngülere sahip olamaz, aksi takdirde Redis diğer komutları kabul etmez ve betikin çalışmasını durdurmak için çalıştırır

Redis, tüm betikleri çalıştırmak için tek bir Lua yorumlayıcısı kullanır ve betiklerin atomik olarak çalıştırılmasını sağlar.Bu, bir script çalışırken başka hiçbir script veya redis komutu çalıştırılmayacağı anlamına gelir! Bu nedenle, mevcut betik yavaş çalışıyorsa, sunucu komutu çalıştıramayabilir çünkü komut meşgul olduğu için, örneğin:

Her scriptin maksimum bir çalışma süresi sınırı vardır, varsayılan değer 5s'tir. Maksimum çalışma süresi, yapılandırma dosyası redis.conf'un lua-zaman sınırı seçeneğiyle veya doğrudan config get ve config set komutlarıyla kontrol edilir. Bir script çalıştırma süresi maksimum çalıştırma süresine ulaştığında, Redis onu aktif olarak sonlandırmaz, aşağıdaki adımları gerçekleştirir:

(1) Redis, bir senaryonun zamanının tükendiğini kaydeder

(2) Redis diğer istemcilerden gelen talepleri yeniden kabul etmeye başlar, ancak sadece script kill komutlarının çalıştırılmasını ve nosave'i kapatmasını kabul eder.

(3) Script sadece okuma işlemlerini gerçekleştiriyorsa, script kill komutunu kullanarak script'i hemen durdurur; Script bir yazma işlemi gerçekleştirirse, sunucuyu durdurmak için sadece kapatma kaydetme/nosave komutu mevcut verilerin diske yazılmasını engellemeye izin verilir. (Bu noktada sunucu kapalıdır ve veri kaydedilmez)


örnek

Komutu çalıştırın, parametreler 2 anahtar ve değerdir ve komut şu şekildedir:


Deadloop scriptlerde, aşağıdaki betikleri çalıştırmak Redis'in diğer komutları işlememesine ve takılmasına neden olur:

Aşağıdaki komutla bir script kullanarak veri tipi dizesini eklemeyi deneyin:

Daha karmaşık betikler çalıştırın, anahtarın değeri verdiğimiz değere eşitse, önbelleği silin, aksi takdirde istediğiniz bir şey yapın, komut şöyledir:

Uygulamanın sonuçları aşağıdaki gibidir:



(Son)




Önceki:.NET/C# Kilit Prensip Monitörü derinlemesine bir açıklama sunar
Önümüzdeki:IIS DELETE PUT request 405 çözümü
 Ev sahibi| Yayınlandı 10.05.2021 09:18:34 |

Bağlantı girişi görünür.
Redis Script Load komutu, script bell'e script eklemek için kullanılır, ancak hemen çalıştırılmaz.

EVAL komutu da script önbelleğe ekler, ancak giriş betiklerini hemen değerlendirir.

Verilen betik zaten önbellekte ise, herhangi bir işlem yapılmaz.

Script önbelleğe eklendikten sonra, EVALSHA komutu aracılığıyla betikin SHA1 kontrol toplamı kullanılarak çağrılabilir. (Bu aynı zamanda şu anlam taşıyor.)Aynı betik, farklı Redis sunucularında aynı sha1 değerini çalıştırır

Scriptler, SCRIPT FLUSH (SCRIPT FLUSH) çalıştırılana kadar önbellekte sonsuz süre kalabilir.



 Ev sahibi| Yayınlandı 12.05.2021 11:38:55 |
Lua betisinin önbellekte olup olmadığını belirleyin


Redis yeniden başlattıktan sonra Lua betiği otomatik olarak silinir, kalıcı olmayacak

Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com