架构师_程序员_码农网

E Ambil kata sandi
Daftar

QQ登录

Hanya satu langkah untuk memulai

Cari
Tampilan:13574|Balas: 2
打印 上一主题 下一主题

[Redis]Redis Menggunakan Skrip Lua Dijelaskan

[Salin tautan]
A 跳转到指定楼层
pemilik
发表于 2021-4-30 15:42:57|只看该作者回帖奖励|MembalikkanPenjelajahan|Mode Baca
Skenario paling umum di mana redis digunakan adalah cache data.

Ulasan

Perbedaan antara RDB persisten Redis dan AOF
h ttps:// www.itsvse.com/thread-9555-1-1.html

Docker menginstal dan menjalankan cache Redis
h ttps:// www.itsvse.com/thread-8995-1-1.html

Contoh-contoh tentang apa itu Penetrasi Cache Redis, Longsoran Cache, dan Knockdown Cache.
h ttps:// www.itsvse.com/thread-8968-1-1.html

tombol hapus kumpulan karakter pengganti redis
h ttps:// www.itsvse.com/thread-7957-1-1.html

Tutorial Redis 5.0.3 di CentOS 7
h ttps:// www.itsvse.com/thread-7201-1-1.html

Instalasi ekstensi redis untuk php 5.5.7 di bawah CentOS.
h ttps:// www.itsvse.com/thread-7200-1-1.html

Berapa banyak kunci yang dapat disimpan dalam satu instance redis, dan berapa jumlah maksimum kunci dan nilai?
h ttps:// www.itsvse.com/thread-6848-1-1.html

Berapa banyak kunci yang dapat disimpan dalam satu instance redis, dan berapa jumlah maksimum kunci dan nilai?
h ttps:// www.itsvse.com/thread-5032-1-1.html

Bagaimana cara menggunakan redis untuk akses jarak jauh?
h ttps:// www.itsvse.com/thread-5011-1-1.html

Windows tidak dapat memulai layanan Redis, kesalahan 1067: Proses dihentikan secara tidak terduga.
h ttps:// www.itsvse.com/thread-5010-1-1.html

Instalasi redis 4.0.8 di centos.
h ttps:// www.itsvse.com/thread-4614-1-1.html

pengaturan redis koneksi jarak jauh dan kata sandi akses
h ttps:// www.itsvse.com/thread-4101-1-1.html

redis menghapus cache data
h ttps:// www.itsvse.com/thread-4027-1-1.html

konfigurasi persistensi redis dan mematikan persistensi
h ttps:// www.itsvse.com/thread-4012-1-1.html

Perbedaan antara save dan bgsave di redis
h ttps:// www.itsvse.com/thread-4010-1-1.html

Dua jenis persistensi di redis dan cara kerjanya
h ttps:// www.itsvse.com/thread-4009-1-1.html

Tiga cara untuk memulai Redis
h ttps:// www.itsvse.com/thread-4008-1-1.html

Cara menyembunyikan jendela baris perintah di Redis
h ttps:// www.itsvse.com/thread-2988-1-1.html

Masalah Pengambilan Hash (Hash) Redis Masalah Pengambilan Hash
h ttps:// www.itsvse.com/thread-2587-1-1.html

5 Hal yang Harus Anda Ketahui Sebelum Menggunakan Redis
h ttps:// www.itsvse.com/thread-2580-1-1.html

Redis Mengubah Nomor Port Default dan Mengatur Kata Sandi Akses
h ttps:// www.itsvse.com/thread-2577-1-1.html

Pengunduhan Redis windows 64 bit, alamat pengunduhan resmi
h ttps:// www.itsvse.com/thread-2576-1-1.html
Dimulai dengan redis versi 2.6.0, redis memiliki penerjemah Lua bawaan dan menyediakan perintah eval untuk mem-parsing skrip Lua untuk mendapatkan nilai.

Sintaks: eval skrip numkeys kunci args

Argumen: eval - redis menyediakan cara untuk mem-parsing skrip lua untuk mendapatkan nilai.

eval - redis menyediakan perintah untuk mengevaluasi skrip lua.

script - skrip lua

numkeys - Menentukan jumlah kunci.

keys - himpunan argumen kunci, diwakili oleh variabel global KEYS array, dimulai dari subskrip 1

args - himpunan argumen kunci, diwakili oleh larik variabel global ARGV, dimulai dengan subskrip 1


Keuntungan menggunakan Lua di Redis

Mengurangi overhead jaringan. Beberapa permintaan dapat ditulis dan dikirim sekaligus, sehingga mengurangi latensi jaringan.
Operasi atomik. redis mengeksekusi seluruh skrip secara keseluruhan, tanpa ada perintah lain yang disisipkan di antaranya. Jadi, Anda tidak perlu khawatir tentang kondisi dan transaksi yang bersaing saat menulis skrip.
Penggandaan. Skrip yang dikirim oleh klien disimpan secara permanen di redis sehingga klien lain dapat menggunakan kembali skrip ini tanpa menggunakan kode untuk menyelesaikan logika yang sama.

Atomisitas Skrip.

Skrip lua tidak boleh muncul dalam operasi yang memakan waktu, tidak boleh ada perulangan yang mati, jika tidak, redis tidak akan menerima perintah lain, implementasi go untuk menghentikan skrip yang sedang berjalan!

redis menggunakan satu penerjemah lua untuk menjalankan semua skrip, dan menjamin bahwa skrip akan dieksekusi secara atomis, yang berarti tidak ada skrip lain atau perintah redis yang akan dieksekusi ketika sebuah skrip sedang berjalan! Jadi, jika skrip yang sedang berjalan lambat, server mungkin tidak dapat menjalankan perintah tersebut karena server sedang sibuk, misalnya:

Setiap skrip memiliki batas waktu eksekusi maksimum, nilai defaultnya adalah 5 detik. Lamanya waktu eksekusi maksimum dikontrol oleh opsi lua-time-limit di dalam berkas konfigurasi redis.conf, atau dapat dimodifikasi secara langsung menggunakan perintah config get dan config set. Ketika eksekusi skrip mencapai waktu eksekusi maksimum, redis tidak akan berinisiatif untuk mengakhirinya, melainkan melakukan langkah-langkah berikut:

① redis mencatat bahwa sebuah skrip kehabisan waktu.

② redis mulai menerima kembali permintaan klien lain, tetapi hanya menerima eksekusi perintah script kill dan shutdown nosave dua perintah, jika klien mengeksekusi perintah lain, redis akan mengembalikan kesalahan sibuk.

③ Jika skrip hanya menjalankan operasi baca, gunakan perintah script kill untuk menghentikan skrip ini dengan segera; jika skrip telah menjalankan operasi tulis, hanya izinkan perintah shutdown save/nosave, dengan menghentikan server untuk mencegah data saat ini ditulis ke disk. (Pada saat server dimatikan, data tidak akan disimpan).


Contoh

Jalankan skrip, parameternya adalah 2 kunci dan nilai, perintahnya adalah sebagai berikut:


Script dead loop, mengeksekusi script berikut akan menyebabkan redis tidak dapat memproses perintah lain dan macet:

Mencoba menambahkan string data baru menggunakan skrip dengan perintah berikut:

Jalankan beberapa skrip yang lebih kompleks untuk menghapus cache hanya jika nilai kunci sama dengan nilai yang kita masukkan, jika tidak, jangan lakukan apa pun, seperti berikut ini:

Hasilnya adalah sebagai berikut:



(Akhir)




Sebelumnya: Prinsip Kunci Kunci NET / C# Memantau penjelasan mendalam
Berikutnya: IIS MENGHAPUS permintaan PUT 405 Solusi
Jaringan petani kode, hanya diterbitkan dalam proses praktik, mengalami kesulitan teknis, jangan menyesatkan orang lain.
Saya tidak yakin apa yang saya bicarakan.
sepatu jordan untuk dijual
pemilik| 发表于 2021-5-10 09:18:34|只看该作者

h ttps:// redis.io/commands/script-exists
Perintah Redis Script Load digunakan untuk menambahkan skrip skrip ke cache skrip, tetapi tidak langsung mengeksekusi skrip tersebut.

Perintah EVAL juga menambahkan skrip ke dalam cache skrip, tetapi langsung mengevaluasi skrip masukan.

Jika skrip yang diberikan sudah ada dalam cache, tidak ada tindakan yang dilakukan.

Setelah skrip ditambahkan ke dalam cache, perintah EVALSHA memungkinkan untuk memanggil skrip menggunakan checksum SHA1-nya. (Ini berarti bahwa skrip yang sama akan mengembalikan nilai sha1 yang sama jika dieksekusi pada server redis yang berbeda ).

Skrip dapat disimpan dalam cache untuk waktu yang tidak terbatas sampai SCRIPT FLUSH dilakukan.



Jaringan petani kode, hanya dipublikasikan dalam proses praktik, mengalami kesulitan teknis, jangan menyesatkan orang lain.
penjualan sepatu bot ugg
Bangku
楼主| 发表于 2021-5-12 11:38:55|只看该作者
Menentukan apakah skrip lua ada di dalam cache


Setelah redis dimulai ulang, skrip lua akan dihapus secara otomatis dan tidak dipertahankan!

Jaringan petani kode, hanya diterbitkan dalam proses praktik, mengalami kesulitan teknis, jangan menyesatkan orang lain.
Anda harus masuk sebelum dapat memposting kembali Masuk | Daftar

V ersi aturan integral iniB


PENAFIAN: Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer hanya digunakan untuk tujuan pembelajaran dan penelitian; konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, semua konsekuensinya harus ditanggung oleh pengguna. Informasi situs ini berasal dari jaringan, sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus menghapus konten di atas sepenuhnya dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, mohon dukung perangkat lunak asli, beli registrasi dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email untuk menanganinya.

Mail To:help@itsvse.com

QQ | ( 鲁ICP备14021824号-2)|Peta Situs

GMT+8, 2024-9-19 01:16

Balas CepatKembali ke atasKembali ke daftar