Analisis contoh transaksi Redis
Penggunaan dalam Redis
Redis melaksanakan fungsi transaksi melalui multi, exec, buang dan jam tangan.
berbilang: mulakan transaksi
eksekusi: lakukan transaksi dan laksanakan
buang: batalkan transaksi
lihat: pantau sebarang bilangan kunci sebelum transaksi bermula
> multi OK > set bookName "Redis" QUEUED > get bookName QUEUED > sadd tag "Redis" "New Book" QUEUED > smembers tag QUEUED > exec 1) OK 2) "Redis" 3) (integer) 2 4) 1) "Redis" 2) "New Book"
Mulakan transaksi
> multi OK
Arahan ini menghidupkan Redis_multi option , biarkan pelanggan bertukar daripada keadaan bukan transaksi kepada keadaan transaksi
Arahan beratur
> set bookName "Redis" QUEUED > get bookName QUEUED > sadd tag "Redis" "New Book" QUEUED > smembers tag QUEUED
Arahan Redis tidak akan dilaksanakan serta-merta, tetapi akan masuk maju Pertama daripada baris gilir transaksi sehingga transaksi dilakukan. QUEUED menunjukkan bahawa arahan ini telah dimasukkan ke dalam baris gilir transaksi.
Laksanakan transaksi
> exec 1) OK 2) "Redis" 3) (integer) 2 4) 1) "Redis" 2) "New Book"
Apabila melaksanakan perintah eksec, Redis melaksanakan arahan dalam baris gilir transaksi dengan cara masuk dahulu, keluar dahulu mengikut baris gilir transaksi yang disimpan oleh pelanggan: arahan pertama yang akan dibariskan Perintah yang dilaksanakan dahulu, dan perintah terakhir yang dimasukkan ke dalam baris gilir dilaksanakan yang terakhir. Selepas melaksanakan perintah exec, Redis menyimpan keputusan dalam baris gilir balasan dan menghantar baris gilir kepada klien. Pelanggan keluar dari keadaan transaksi dan transaksi selesai.
arahan buang
> multi OK > set author "lisi" QUEUED > discard OK > get author (nil)
buang ialah perintah untuk membatalkan transaksi, yang menunjukkan bahawa transaksi telah dibatalkan. Apabila pelanggan menamatkan keadaan transaksi dan kembali kepada keadaan bukan transaksi, pilihan Redis_multi perlu dimatikan.
perintah jam tangan
# Redis 客户端1 > watch letter OK > multi OK > set letter a QUEUED > exec (nil) # Redis 客户端2 > set letter b OK # Redis 客户端1 > get letter "b"
Apabila pelanggan 1 memasuki transaksi, jam tangan menetapkan kunci huruf dan menetapkan nilainya kepada a, tetapi transaksi belum lagi serahkan. Klien 2 menetapkan nilai huruf kepada b. Selepas pelanggan 1 melakukan transaksi, hasil yang dikembalikan adalah sifar, tetapi dengan memanggil arahan get, nilai huruf boleh diperolehi sebagai b. Ini bermakna apabila kunci huruf ditukar oleh pelanggan lain, transaksi akan dibatalkan, tidak akan dilaksanakan dan akan gagal.
Arahan jam tangan memantau sebarang bilangan kunci sebelum transaksi bermula: apabila memanggil perintah excel untuk melaksanakan transaksi, jika mana-mana kunci yang dipantau telah diubah suai oleh pelanggan lain, keseluruhan transaksi tidak akan dilaksanakan lagi dan akan kembali secara langsung.
Pengecualian transaksi
Ralat arahan
> set letter ac QUEUED > get letter ac (error) ERR wrong number of arguments for 'get' command > exec (error) EXECABORT Transaction discarded because of previous errors.
Pengecualian arahan dalam transaksi ialah ralat sintaks dan akan menyebabkan transaksi gagal dilaksanakan .
Pengecualian Runtime
> multi OK > lpush books "Redis" QUEUED > incr books QUEUED > lpush books "Python" QUEUED > lrange books 0 -1 QUEUED > exec 1) (integer) 1 2) (error) WRONGTYPE Operation against a key holding the wrong kind of value 3) (integer) 2 4) 1) "Python" 2) "Redis"
Contoh di atas ialah urus niaga mengalami kegagalan pada pertengahan pelaksanaan, kerana perintah incr tidak boleh dilakukan pada rentetan Selepas urus niaga menemui kegagalan pelaksanaan arahan , seterusnya Perintah terus dilaksanakan, jadi nilai buku terus ditetapkan. Pengecualian ini hanya boleh dielakkan oleh pengaturcara dalam kod mereka.
ACID urus niaga
Atomicity
Atom bermaksud sama ada ia berjaya dilaksanakan bersama-sama atau gagal bersama-sama dan ditarik balik. Semua API yang disediakan oleh Redis adalah operasi atom. Kemudian urus niaga Redis hanya perlu memastikan atomicity dalam kumpulan operasi, tetapi dalam kes pengecualian masa jalan, jika pengecualian arahan berlaku dalam transaksi, arahan lain akan terus dilaksanakan tidak dijamin seksual.
Ketekalan
Pengecualian urus niaga
Jika terdapat ralat arahan, transaksi tidak boleh dilaksanakan Jika pengecualian masa jalan, Redis akan memasukkan ralat dalam hasil pemulangan dan tidak akan menjejaskan pelaksanaan seterusnya , jadi transaksi adalah konsisten.
Proses Redis telah ditamatkan
Dalam mod memori tulen, Redis tidak melakukan kegigihan Selepas memulakan semula, pangkalan data kosong, jadi ia konsisten dari segi transaksi.
Dalam mod RDB, transaksi tidak akan melaksanakan kerja menyimpan fail RDB di tengah-tengah Kerja RDB hanya boleh bermula selepas transaksi selesai. Oleh itu, proses Redis dimatikan semasa pelaksanaan transaksi, dan tidak kira betapa berjayanya, ia tidak akan disimpan ke fail RDB, jadi ia adalah konsisten.
Dalam mod AOF, sebahagian daripada penyata transaksi ditulis ke fail AOF dan berjaya disimpan ke fail AOF Apabila memulakan semula Redis, pastikan fail AOF tidak lengkap dan Redis keluar dengan satu kesilapan. Urus niaga yang tidak lengkap ini perlu dipadamkan sebelum permulaan semula boleh berjaya, jadi ia adalah konsisten.
Dalam mod AOF, urus niaga tidak ditulis ke fail AOF, jadi selepas memulakan semula pangkalan data Redis adalah data terkini yang berjaya disimpan ke fail AOF. Tiada data untuk transaksi ini, jadi ia adalah konsisten.
Pengasingan
Redis ialah program proses tunggal, dan ia menjamin bahawa urus niaga tidak akan terganggu semasa melaksanakan transaksi, dan urus niaga boleh dijalankan sehingga semua arahan dalam baris gilir transaksi dilaksanakan . Jadi urus niaga diasingkan.
Tahan Lama
Dalam mod memori tulen, transaksi pastinya tidak berterusan.
Dalam mod RDB, pelayan mungkin gagal dalam tempoh selepas transaksi dilaksanakan dan sebelum fail RDB dikemas kini, jadi transaksi dalam mod RDB tidak tahan lama.
Dalam mod AOF, tambahkan arahan pada fail AOF, tetapi menulis fail tidak akan ditulis ke cakera serta-merta, tetapi akan disimpan dalam penimbal terlebih dahulu. Jadi terdapat selang yang sangat kecil antara data yang disimpan ke cakera. Transaksi dalam mod ini juga tidak tahan lama.
Atas ialah kandungan terperinci Analisis contoh 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.

Kerugian data REDIS termasuk kegagalan memori, gangguan kuasa, kesilapan manusia, dan kegagalan perkakasan. Penyelesaiannya adalah: 1. 2. Salin ke beberapa pelayan untuk ketersediaan tinggi; 3. Ha dengan redis sentinel atau cluster redis; 4. Buat gambar untuk membuat sandaran data; 5. Melaksanakan amalan terbaik seperti kegigihan, replikasi, gambar, pemantauan, dan langkah -langkah keselamatan.

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.
