Rumah > pangkalan data > Redis > teks badan

Analisis contoh transaksi Redis

WBOY
Lepaskan: 2023-05-26 11:25:55
ke hadapan
1551 orang telah melayarinya

    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"
    Salin selepas log masuk

    Mulakan transaksi

    > multi
    OK
    Salin selepas log masuk

    Arahan ini menghidupkan Redis_multi option , biarkan pelanggan bertukar daripada keadaan bukan transaksi kepada keadaan transaksi

    Analisis contoh transaksi Redis

    Arahan beratur

    > set bookName "Redis"
    QUEUED
    > get bookName
    QUEUED
    > sadd tag "Redis" "New Book"
    QUEUED
    > smembers tag
    QUEUED
    Salin selepas log masuk

    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"
    Salin selepas log masuk

    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)
    Salin selepas log masuk

    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.

    Analisis contoh transaksi Redis

    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"
    Salin selepas log masuk

    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.

    Analisis contoh transaksi Redis

    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.
    Salin selepas log masuk

    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"
    Salin selepas log masuk

    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan