Rumah > Soal Jawab > teks badan
redis设计与实现 书中说:
Redis的事务总是具有ACID中的原子性、一致性和隔离性,当服务器运行在AOF
持久化模式下,并且appendfsync选项的值为always时,事务也具有耐久性。
可看网上资料,又说redis事务不满足原子性和持久性:
在redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行,并不会自动回滚;
在AOF的“总是 SYNC ”模式下,事务的每条命令在执行成功之后,都会立即调用fsync或fdatasync将事务数据写入到AOF文件。
但是,这种保存是由后台线程进行的,主线程不会阻塞直到保存成功,所以从命令执行成功到数据保存到硬盘之间,还是有一段非常小的间隔,所以这种模式下的事务也是不持久的。
求解答~~
迷茫2017-04-24 09:14:18
Ini terutamanya disebabkan oleh keraguan tentang keatomisan redis Kini telah disahkan bahawa redis tidak memastikan keatomisan Apabila pelaksanaan perintah gagal dalam urus niaga, ia tidak akan ditarik balik.
Adalah penting untuk ambil perhatian bahawa walaupun arahan gagal, semua arahan lain dalam baris gilir diproses – Redis tidak akan menghentikan pemprosesan arahan.
PHPz2017-04-24 09:14:18
Pertama sekali, redis adalah berutas tunggal, jadi tiada konsep transaksi, melainkan anda menggunakan mutil untuk merangkum satu set perintah secara manual dan melaksanakannya secara keseluruhan Secara khusus, jika satu arahan dalam keseluruhannya gagal, adakah ia akan ditarik balik? Anda boleh melakukan ujian sendiri.
Berbenang tunggal, jadi setiap perintah adalah atom Konsistensi dan pengasingan adalah untuk urus niaga Redis dilaksanakan dengan merangkum sekumpulan perintah bersama-sama, jadi mereka diasingkan kerana mereka menyekat yang lain untuk pelaksanaan perintah, seperti untuk konsistensi. , jika ujian yang anda lakukan di atas akan berguling, maka ia konsisten, jika ia tidak berguling, maka ia tidak konsisten.