Apakah ACID transaksi? Bolehkah urus niaga Redis melaksanakan ACID?
Adakah transaksi Redis menyokong ACID? Artikel berikut akan membawa anda memahami urus niaga Redis, memperkenalkan cara Redis melaksanakan urus niaga dan bercakap tentang sama ada transaksi Redis menyokong ACID. Saya harap ia akan membantu anda.
Pewawancara Tencent: "Adakah anda memahami urus niaga Redis? Bolehkah mekanisme transaksinya merealisasikan sifat ACID
Cheng Xuyuan : "Menggaruk kepala saya, ini... Saya tahu skrip Lua boleh melaksanakan transaksi..."
Penemuduga Tencent: "Baiklah, balik dan tunggu pemberitahuan
Ma Ge , saya mendapat banyak tawaran, tetapi saya tidak sangka akhirnya saya kalah dalam soalan "Bagaimana Redis melaksanakan transaksi?"
Mari kita analisa langkah demi langkah:
Apakah itu ACID transaksi?
Bagaimana Redis melaksanakan transaksi?
Apakah sifat yang boleh dicapai oleh transaksi Redis?
Pelaksanaan skrip Lua.
Apakah ACID of affairs?
Kapten Mojin dalam Hantu Meniup Tanglung "Lembah Serangga Yunnan" mempunyai pepatah yang dipanggil " He Ze" "Hidup, bahagian, mati." Untuk mencari Muchen Bead, mereka bertiga mempunyai pembahagian kerja yang jelas dan bekerjasama untuk maju dan berundur bersama untuk berjaya.
Transaksi ialah unit kawalan serentak, yang terdiri daripada urutan operasi sama ada semua operasi ini dilaksanakan atau tiada satu pun daripadanya dilaksanakan. [Cadangan berkaitan: Tutorial video Redis]
"Ia ialah unit kerja yang tidak boleh dibahagikan."
Apabila transaksi dilaksanakan, ia akan memberikan jaminan atribut khas:
Atomicity: berbilang operasi transaksi mesti diselesaikan, atau tiada satu pun daripadanya mesti diselesaikan ( ps: Bagaimana MySQL mencapai atomicity? Komen dalam kawasan mesej adalah dialu-alukan); Perintah sebelum dan selepas pelaksanaan adalah semua keadaan data undang-undang.
Kekangan integriti pangkalan data termasuk tetapi tidak terhad kepada: -
Integriti entiti (seperti kunci utama baris wujud dan unik); Integriti lajur (seperti medan Jenis, saiz dan panjang mesti memenuhi keperluan) Kekangan kunci asing
- Integriti yang ditentukan pengguna (contohnya, jumlah baki kedua-dua; akaun hendaklah kekal tidak berubah sebelum dan selepas pemindahan).
- Pengasingan: Operasi dalam urus niaga diasingkan daripada urus niaga lain dan urus niaga yang dilaksanakan serentak tidak boleh mengganggu satu sama lain.
- memfokuskan pada interaksi antara transaksi yang berbeza Pengasingan ketat sepadan dengan boleh bersiri (Boleh Bersiri) dalam tahap pengasingan.
-
Ketahanan: Setelah transaksi dilakukan, semua pengubahsuaian akan disimpan secara kekal dalam pangkalan data dan data tidak akan hilang walaupun sistem ranap dan dimulakan semula.
- Code Brother, setelah memahami keperluan khusus ACID, bagaimana Redis melaksanakan mekanisme transaksi?
MULTI
, EXEC,
BUANGdan Perintah 🎜>TONTON adalah asas untuk Redis melaksanakan transaksi. Proses pelaksanaan transaksi Redis terdiri daripada tiga langkah: Buka transaksi;
Lakukan transaksi atau buang;
- Buka transaksi secara eksplisit
- Pelanggan Yang pelanggan secara eksplisit memulakan urus niaga melalui perintah
- , dan arahan seterusnya akan beratur dan dicache dan tidak akan dilaksanakan sebenarnya.
Pelanggan menghantar satu siri arahan untuk dilaksanakan dalam transaksi kepada pelayan.
Perlu diambil perhatian bahawa walaupun arahan dihantar ke pelayan, tika Redis hanya menyimpan sementara siri arahan ini dalam baris gilir arahan dan tidak akan melaksanakannya dengan serta-merta.MULTI
Laksanakan transaksi atau buangPelanggan menghantar arahan untuk menyerahkan atau membuang transaksi ke pelayan, dan biarkan Redis melaksanakan arahan yang dihantar dalam langkah kedua Arahan khusus atau arahan baris gilir yang jelas, hentikan pelaksanaan.
Redis boleh menjadualkan pelaksanaan perintah baris gilir hanya apabila
EXECdipanggil.
Anda juga boleh menggunakan BUANG untuk membuang arahan yang disimpan dalam baris gilir dalam langkah kedua.
Kes transaksi Redis
Laksanakan kod sampel kami melalui tapak web penyahpepijatan dalam talian: try.redis.io Laksanakan seperti biasa melalui Kami melihat hasil pulangan selepas setiap arahan baca dan tulis dilaksanakan ialah Apabila perintah Tinggalkan transaksi Buang arahan baris gilir melalui Ma Ge, transaksi Redis Boleh Sifat ASID dijamin? Ini soalan yang bagus, mari kita menganalisisnya bersama-sama. Transaksi Redis boleh melaksanakan berbilang arahan pada satu masa, dan disertakan dengan tiga jaminan penting berikut: Arahan kelompok sedang dijalankan dilaksanakan Perintah EXEC akan dimasukkan ke dalam baris gilir untuk storan sementara sebelum; perintah yang tinggal masih akan dilaksanakan; Semasa pelaksanaan transaksi, arahan yang diserahkan oleh pelanggan lain tidak akan dimasukkan ke dalam urutan pelaksanaan perintah semasa. Kod Abang, jika ralat berlaku semasa pelaksanaan transaksi, prestasi atom dijamin Apa ? itu sendiri adalah salah. Seperti berikut: Apabila arahan dibariskan dalam baris gilir, Redis akan melaporkan ralat dan merekodkan ralat itu. Pada masa ini, kami masih boleh terus menyerahkan operasi arahan. Selepas melaksanakan perintah , Redis akan menolak untuk melaksanakan semua operasi arahan yang diserahkan dan mengembalikan hasil kegagalan transaksi Berikut ialah contoh ralat dalam perintah beratur, menyebabkan kegagalan transaksi: EXEC melaporkan ralat selepas pelaksanaan Operasi transaksi Semasa beratur, jenis data arahan dan operasi tidak sepadan, tetapi tika Redis tidak mengesan ralat. Walau bagaimanapun, selepas melaksanakan arahan EXEC, Redis akan melaporkan ralat apabila ia benar-benar melaksanakan arahan ini. Ma Ge, mengapa Redis tidak menyokong rollback? Jika Redis menghidupkan log AOF, maka hanya sebahagian daripada operasi transaksi akan direkodkan dalam log AOF. Kami perlu menggunakan alat redis-check-aof untuk menyemak fail log AOF Alat ini boleh mengalih keluar operasi transaksi yang belum selesai daripada fail AOF. Dengan cara ini, selepas kami menggunakan AOF untuk memulihkan kejadian, operasi transaksi tidak akan dilaksanakan lagi, sekali gus memastikan atomicity. : Ralat akan dilaporkan apabila perintah itu dimasukkan ke dalam baris gilir, dan pelaksanaan transaksi akan ditinggalkan untuk memastikan atomicity; > Apabila arahan dimasukkan ke dalam baris gilir Tiada ralat dilaporkan, tetapi ralat dilaporkan semasa pelaksanaan sebenar, dan atomicity tidak dijamin Konsistensi akan dipengaruhi oleh arahan yang salah dan masa kegagalan contoh, akan berlaku menjadi dua kegagalan contoh Masa kejadian dimensi boleh dianalisis dalam tiga situasi. Sebelum pelaksanaan EXEC, ralat akan dilaporkan selepas menyertai baris gilir Transaksi akan ditinggalkan, jadi konsistensi boleh dijamin. Selepas EXEC dilaksanakan, ralat akan dilaporkan semasa pelaksanaan sebenar Pelaksanaan dengan ralat tidak akan dilaksanakan seperti biasa konsistensi boleh dijamin. Apabila EXEC dilaksanakan, instance gagal Selepas instance gagal, ia akan dimulakan semula Ini berkaitan dengan kaedah pemulihan data RDB atau AOF akan dibincangkan mengikut kes. Jika kami tidak mendayakan RDB atau AOF, maka selepas kejadian gagal dan dimulakan semula, data akan hilang dan pangkalan data akan konsisten. Jika kita menggunakan petikan RDB, kerana petikan RDB tidak akan dilaksanakan apabila transaksi dilaksanakan. Oleh itu, hasil operasi arahan transaksi tidak akan disimpan ke petikan RDB Apabila menggunakan petikan RDB untuk pemulihan, data dalam pangkalan data akan konsisten. Jika kami menggunakan log AOF dan contoh gagal sebelum operasi transaksi direkodkan dalam log AOF, maka data pangkalan data yang dipulihkan menggunakan log AOF akan 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. Pengasingan Pelaksanaan transaksi boleh dibahagikan kepada perintah beratur (sebelum arahan EXEC dilaksanakan) dan perintah pelaksanaan sebenar (selepas arahan EXEC dilaksanakan) Dua peringkat. Jadi semasa pelaksanaan serentak, kami menganalisis kedua-dua peringkat ini dalam dua situasi: Operasi serentak dilaksanakan sebelum perintah Operasi serentak selepas perintah Saudara Kod, apakah mekanisme WATCH? Mari fokus pada situasi pertama: apabila perintah EXEC sesuatu transaksi belum dilaksanakan, operasi perintah transaksi disimpan sementara dalam baris gilir perintah. Pada masa ini, jika terdapat operasi serentak lain dan kunci yang sama diubah suai, anda perlu menyemak sama ada transaksi menggunakan mekanisme Fungsi mekanisme WATCH adalah untuk memantau perubahan nilai satu atau lebih kunci sebelum transaksi dilaksanakan Apabila transaksi memanggil arahan EXEC untuk melaksanakan, mekanisme WATCH akan menyemak dahulu sama ada kunci yang dipantau mempunyai. telah diubah suai oleh pelanggan lain. Jika diubah suai, pelaksanaan transaksi akan ditinggalkan untuk mengelakkan pengasingan transaksi daripada dimusnahkan. Pada masa yang sama, pelanggan boleh melaksanakan transaksi semula Pada masa ini, jika tiada operasi serentak untuk mengubah suai data transaksi, transaksi boleh dilaksanakan secara normal, dan pengasingan juga dijamin. . Tiada WATCH Jika tiada mekanisme WATCH, operasi serentak membaca dan menulis data sebelum arahan EXEC dilaksanakan. Apabila EXEC dilaksanakan, data yang akan dikendalikan dalam transaksi telah berubah dan Redis tidak mengasingkan transaksi. Operasi serentak diterima dan dilaksanakan selepas EXEC Bagi kes kedua, kerana Redis menggunakan satu utas untuk melaksanakan arahan , dan , selepas arahan EXEC dilaksanakan, Redis akan memastikan semua arahan dalam baris gilir arahan dilaksanakan terlebih dahulu sebelum melaksanakan arahan seterusnya. Jadi, dalam kes ini, operasi serentak tidak akan memecahkan pengasingan transaksi. Kegigihan Jika Redis tidak menggunakan RDB atau AOF, maka atribut kegigihan transaksi mesti Tiada jaminan. Jika Redis menggunakan mod RDB, maka selepas transaksi dilaksanakan tetapi sebelum petikan RDB seterusnya dilaksanakan, jika ranap kejadian berlaku dan data hilang, dalam kes ini, Data pengubahsuaian transaksi juga tidak dijamin untuk tahan lama. Jika Redis menggunakan mod AOF, akan berlaku kehilangan data kerana tiga pilihan konfigurasi mod AOF: tidak, setiap saat dan sentiasa. Oleh itu, sifat ketahanan transaksi masih tidak terjamin. Tidak kira apa mod kegigihan yang diguna pakai Redis, sifat ketahanan transaksi tidak dijamin. Ringkasan Mekanisme transaksi Redis boleh menjamin konsistensi dan pengasingan, tetapi ia tidak dapat menjamin ketahanan. Walau bagaimanapun, kerana Redis sendiri adalah pangkalan data dalam memori, kegigihan bukanlah atribut yang diperlukan Kami lebih mengambil berat tentang tiga sifat atomicity, konsistensi dan pengasingan. Situasi atomicity lebih rumit Apabila sintaks arahan yang digunakan dalam transaksi tidak betul, atomicity tidak dijamin Dalam kes lain, transaksi boleh dilaksanakan secara atom. Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengenalan kepada Pengaturcaraan! ! MULTI
dan EXEC
Jalankan proses transaksi: # 开启事务
> MULTI
OK
# 开始定义一些列指令
> SET “公众号:码哥字节” "粉丝 100 万"
QUEUED
> SET "order" "30"
QUEUED
> SET "文章数" 666
QUEUED
> GET "文章数"
QUEUED
# 实际执行事务
> EXEC
1) OK
2) OK
3) OK
4) "666"
QUEUED
, yang bermaksud terima kasih Operasi telah disimpan sementara dalam baris gilir arahan , dan tiada pelaksanaan sebenar. EXEC
dilaksanakan, anda boleh melihat data tindak balas setiap arahan. MULTI
dan DISCARD
: # 初始化订单数
> SET "order:mobile" 100
OK
# 开启事务
> MULTI
OK
# 订单 - 1
> DECR "order:mobile"
QUEUED
# 丢弃丢列命令
> DISCARD
OK
# 数据没有被修改
> GET "order:mobile"
"100"
Adakah transaksi Redis memuaskan ACID?
Semasa transaksi, dua jenis ralat arahan mungkin dihadapi:
Arahan yang dihantar sebelum melaksanakan perintah Bilangan parameter salah;
EXEC
Nama arahan salah dan arahan yang tidak wujud digunakan
maxmemory
Selepas melaksanakan perintah EXEC
EXEC
EXEC melaporkan ralat sebelum pelaksanaanEXEC
Dengan cara ini, semua arahan dalam transaksi tidak akan dilaksanakan lagi, memastikan atomicity. #开启事务
> MULTI
OK
#发送事务中的第一个操作,但是Redis不支持该命令,返回报错信息
127.0.0.1:6379> PUT order 6
(error) ERR unknown command `PUT`, with args beginning with: `order`, `6`,
#发送事务中的第二个操作,这个操作是正确的命令,Redis把该命令入队
> DECR b:stock
QUEUED
#实际执行事务,但是之前命令有错误,所以Redis拒绝执行
> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
Sebenarnya, Redis tidak menyediakan mekanisme rollback. Walaupun Redis menyediakan arahan DISCARD. Walau bagaimanapun, arahan ini hanya boleh digunakan untuk secara aktif meninggalkan pelaksanaan transaksi dan mengosongkan baris gilir perintah sementara, dan tidak mempunyai kesan gulung balik.
Kegagalan berlaku semasa pelaksanaan EXEC
EXEC
dan pengasingan perlu diluluskan WATCH
Mekanisme dijamin; EXEC
, pengasingan boleh dijamin. WATCH
.
Atas ialah kandungan terperinci Apakah ACID transaksi? Bolehkah urus niaga Redis melaksanakan ACID?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Fungsi teras Redis adalah sistem penyimpanan dan pemprosesan data berprestasi tinggi. 1) Akses data berkelajuan tinggi: Redis menyimpan data dalam memori dan menyediakan kelajuan membaca dan menulis tahap mikrosecond. 2) Struktur Data Kaya: Menyokong rentetan, senarai, koleksi, dan lain -lain, dan menyesuaikan diri dengan pelbagai senario aplikasi. 3) Kegigihan: Data berterusan ke cakera melalui RDB dan AOF. 4) Menerbitkan langganan: boleh digunakan dalam beratur mesej atau sistem komunikasi masa nyata.

Redis menyokong pelbagai struktur data, termasuk: 1. String, sesuai untuk menyimpan data nilai tunggal; 2. Senarai, sesuai untuk beratur dan susunan; 3. Tetapkan, digunakan untuk menyimpan data yang tidak duplikasi; 4. Diarahkan set, sesuai untuk senarai ranking dan beratur keutamaan; 5. Jadual hash, sesuai untuk menyimpan objek atau data berstruktur.

Kaunter Redis adalah satu mekanisme yang menggunakan penyimpanan pasangan nilai utama REDIS untuk melaksanakan operasi pengiraan, termasuk langkah-langkah berikut: mewujudkan kekunci kaunter, meningkatkan tuduhan, mengurangkan tuduhan, menetapkan semula, dan mendapatkan tuduhan. Kelebihan kaunter Redis termasuk kelajuan cepat, konkurensi tinggi, ketahanan dan kesederhanaan dan kemudahan penggunaan. Ia boleh digunakan dalam senario seperti pengiraan akses pengguna, penjejakan metrik masa nyata, skor permainan dan kedudukan, dan pengiraan pemprosesan pesanan.

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.

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

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.

Penggunaan ZSET dalam Redis Cluster: ZSET adalah koleksi yang diperintahkan yang mengaitkan unsur -unsur dengan skor. Strategi Sharding: a. Hash Sharding: Mengedarkan nilai hash mengikut kunci ZSET. b. Pelbagai Sharding: Bahagikan ke dalam julat mengikut skor elemen, dan tetapkan setiap julat kepada nod yang berbeza. Baca dan tulis operasi: a. Baca Operasi: Jika kekunci ZSET adalah milik nod semasa, ia akan diproses secara tempatan; Jika tidak, ia akan dialihkan ke shard yang sepadan. b. Tulis Operasi: Sentiasa diarahkan ke Shards memegang kekunci ZSET.

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.


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

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft