Bagaimana untuk melaksanakan transaksi Redis
Penerangan atribut ASID
Atomicity
Semua operasi dalam urus niaga tidak boleh dibahagikan dalam pangkalan data, sama ada semua telah selesai atau tidak ada yang dilaksanakan.
Ketekalan (Ketekalan)
Pelaksanaan transaksi menukar data dari satu keadaan ke keadaan lain Sebelum urus niaga bermula dan selepas urus niaga tamat, kekangan integriti pangkalan data tidak dilanggar.
Pengasingan
Pengasingan transaksi memerlukan objek setiap transaksi baca-tulis diasingkan daripada objek operasi urus niaga lain, iaitu transaksi tidak kelihatan kepada transaksi lain sebelum ini. ia komited.
Ketahanan
Selepas pangkalan data melaksanakan transaksi, pengubahsuaian data mesti diteruskan. Apabila pangkalan data dimulakan semula, nilai data perlu menjadi nilai yang diubah suai.
Cara Redis melaksanakan transaksi
Prinsip pelaksanaan
Pelaksanaan transaksi Redis merangkumi tiga langkah, seperti berikut:
Pelanggan end menggunakan arahan MULTI untuk memulakan transaksi secara eksplisit.
Pelayan menerima operasi khusus yang dihantar oleh pelanggan (seperti menambah, memadam dan mengubah suai data) dan melaksanakannya dalam transaksi. Operasi ini ialah perintah baca dan tulis data yang disediakan oleh Redis sendiri Walaupun arahan ini dihantar ke pelayan oleh klien, contoh Redis hanya menyimpan sementara arahan ini dalam baris gilir arahan dan tidak melaksanakannya dengan serta-merta.
Hanya apabila arahan EXEC diterima dan dilaksanakan, Redis akan melakukan transaksi dan benar-benar melaksanakan semua arahan dalam baris gilir transaksi.
Arahan berkaitan transaksi
MULTI: buka transaksi
EXEC: lakukan transaksi dan laksanakan arahan Semua arahan operasi dalam baris gilir.
BUANG: Batalkan transaksi dan kosongkan baris gilir arahan, tetapi tidak boleh menyokong pemulangan transaksi.
TONTON: Kesan sama ada nilai satu atau lebih kunci berubah semasa pelaksanaan transaksi Jika ia berubah, maka transaksi semasa meninggalkan pelaksanaan.
Bagaimanakah transaksi Redis menyokong ACID
Adakah transaksi Redis menyokong atomicity?
Situasi 1: Ralat dilaporkan semasa melaksanakan transaksi apabila ia ditambahkan pada baris gilir, kemudian Redis akan menyerahkan pelaksanaan transaksi untuk memastikan atomicity transaksi.
Senario 2: Arahan tidak melaporkan ralat apabila ia berada dalam baris gilir, tetapi ralat dilaporkan apabila ia benar-benar dilaksanakan Keatoman transaksi tidak boleh dijamin.
Contoh perihalan kes satu
127.0.0.1:6379> multi OK 127.0.0.1:6379> set t1 v1 QUEUED 127.0.0.1:6379> set t2 v2 QUEUED 127.0.0.1:6379> setget t3 (error) ERR unknown command 'setget' 127.0.0.1:6379> set t4 v4 QUEUED 127.0.0.1:6379> exec (error) EXECABORT Transaction discarded because of previous errors. 127.0.0.1:6379> get t4 (nil)
Penjelasan: Sebelum melaksanakan perintah exec, jika ralat sintaks berlaku (arahan tidak wujud digunakan), maka apabila arahan beratur, Redis akan melaporkan ralat dan merekodkan ralat Selepas arahan Exec dilaksanakan, Redi akan menolak semua arahan yang diserahkan dan pelaksanaan transaksi akan gagal. Dalam kes ini, transaksi Reid boleh menyokong atomicity.
Contoh perihalan kes 2
127.0.0.1:6379> multi OK 127.0.0.1:6379> incr s2 QUEUED 127.0.0.1:6379> set a1 v1 QUEUED 127.0.0.1:6379> set a2 v2 QUEUED 127.0.0.1:6379> exec 1) (error) ERR value is not an integer or out of range 2) OK 3) OK 127.0.0.1:6379> get a2 "v2"
Penjelasan: Nilai s2 ialah v2 Apabila melaksanakan perintah incr, ralat dilaporkan kerana incr hanya boleh menambah nilai jenis integer, tetapi dalam kes ini. kami mendapati Transaksi Redis tidak ditarik balik, dan arahan seterusnya boleh dilaksanakan dengan jayanya, jadi keatomisan transaksi tidak dapat dijamin dalam kes ini.
Adakah transaksi Redis menyokong konsistensi?
Senario 1: Ralat dilaporkan apabila perintah dibariskan
Dalam kes pertama, urus niaga itu sendiri akan ditinggalkan, jadi konsistensi transaksi boleh dijamin.
Kes 2: Tiada ralat dilaporkan apabila arahan ditambah pada baris gilir, tetapi ralat dilaporkan apabila benar-benar dilaksanakan
Dalam kes kedua, arahan yang salah tidak akan dilaksanakan, tetapi arahan yang betul boleh dilaksanakan secara normal, dan Akan mengubah ketekalan pangkalan data.
Senario 3: Perintah pelaksanaan Exec Contoh Redis gagal
Jika kegigihan Redis ditetapkan kepada RDB, petikan RDB yang dijana tidak akan dilaksanakan apabila transaksi dilaksanakan, jadi transaksi Hasil operasi arahan tidak akan disimpan ke petikan RDB Apabila menggunakan petikan RDB untuk pemulihan, data dalam pangkalan data akan konsisten.
Jika kegigihan Reids ditetapkan kepada AOF dan kejadian gagal sebelum operasi transaksi direkodkan dalam log AOF, maka data pangkalan data yang dipulihkan menggunakan log AOF adalah konsisten . Jika hanya beberapa operasi direkodkan dalam log AOF, kami boleh menggunakan redis-check-aof untuk mengosongkan operasi yang telah selesai dalam transaksi, dan pangkalan data akan konsisten selepas pemulihan.
Adakah transaksi Redis menyokong pengasingan?
Untuk mencapai pengasingan transaksi Redis, anda perlu menggunakan arahan jam tangan. Prinsip Watch ialah apabila memantau perubahan dalam satu atau lebih kunci sebelum transaksi dilaksanakan, apabila transaksi memanggil arahan EXEC untuk melaksanakan, mekanisme WATCH akan terlebih dahulu menyemak sama ada kunci yang dipantau telah diubah suai oleh pelanggan lain. Jika nilai pendengar diubah suai, pelaksanaan transaksi ditinggalkan untuk mengelakkan pengasingan transaksi daripada dimusnahkan.
Contoh penerangan
Klien 1:
127.0.0.1:6379> get blance "100" 127.0.0.1:6379> watch blance OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> decrby blance 10 QUEUED 127.0.0.1:6379> incrby blance 10 QUEUED 127.0.0.1:6379> exec (nil)
Klien 2:
127.0.0.1:6379> get blance "100" 127.0.0.1:6379> set blance 90 OK 127.0.0.1:6379> get blance "90"
Penjelasan: Pelanggan 1 menggunakan jam tangan untuk mengesan baki, selepas membuka transaksi, lakukan operasi menukar nilai baki pada pelanggan 2, simulasi pelanggan lain menukar data yang dipantau oleh jam tangan semasa pelaksanaan transaksi, dan kemudian laksanakan perintah EXEC pelanggan 1, dan mendapati transaksi itu tidak berjaya dilaksanakan.
Adakah transaksi Redis menyokong kegigihan?
Transaksi Redis tidak boleh menyokong kegigihan Jika Redis menggunakan mod RDB, selepas transaksi dilaksanakan, tetapi sebelum petikan RDB seterusnya dilaksanakan, kejadian Redis ranap tahan lama. Jika Redis menggunakan mod AOF, kehilangan data mungkin berlaku tanpa mengira sama ada konfigurasi kegigihan adalah tidak, setiap saat atau sentiasa.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan transaksi Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Menggunakan REDIS untuk mengunci operasi memerlukan mendapatkan kunci melalui arahan SETNX, dan kemudian menggunakan perintah luput untuk menetapkan masa tamat tempoh. Langkah-langkah khusus adalah: (1) Gunakan arahan SETNX untuk cuba menetapkan pasangan nilai utama; (2) Gunakan perintah luput untuk menetapkan masa tamat tempoh untuk kunci; (3) Gunakan perintah DEL untuk memadam kunci apabila kunci tidak lagi diperlukan.

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Pada sistem CentOS, anda boleh mengehadkan masa pelaksanaan skrip LUA dengan mengubah fail konfigurasi REDIS atau menggunakan arahan REDIS untuk mengelakkan skrip jahat daripada memakan terlalu banyak sumber. Kaedah 1: Ubah suai fail konfigurasi Redis dan cari fail konfigurasi Redis: Fail konfigurasi Redis biasanya terletak di /etc/redis/redis.conf. Edit Fail Konfigurasi: Buka fail konfigurasi menggunakan editor teks (seperti Vi atau nano): sudovi/etc/redis/redis.conf Tetapkan had masa pelaksanaan skrip lua: Tambah atau ubah suai baris berikut dalam fail konfigurasi untuk menetapkan masa pelaksanaan maksimum skrip lua (unit: milidor)
