Pembahagian redis
Pembahagian ialah proses membahagikan data kepada berbilang tika Redis, jadi setiap tika hanya menyimpan subset kunci.
Kelebihan Pembahagian
Membolehkan kami membina pangkalan data yang lebih besar dengan menggunakan jumlah memori berbilang komputer.
Melalui berbilang teras dan berbilang komputer, ia membolehkan kami mengembangkan kuasa pengkomputeran melalui berbilang komputer dan penyesuai rangkaian, ia membolehkan kami mengembangkan lebar jalur rangkaian.
Kelemahan pembahagian
Sesetengah ciri redis tidak berfungsi dengan baik dari segi pembahagian:
Melibatkan berbilang kunci Operasi ini biasanya tidak disokong. Sebagai contoh, apabila dua set dipetakan kepada kejadian redis yang berbeza, anda tidak boleh melakukan operasi persilangan pada dua set.
Transaksi Redis yang melibatkan berbilang kunci tidak boleh digunakan.
Apabila menggunakan partition, pemprosesan data menjadi lebih kompleks Contohnya, anda perlu memproses berbilang fail rdb/aof dan sandaran fail berterusan daripada berbilang kejadian dan hos.
Menambah atau mengalih keluar kapasiti juga lebih rumit. Kebanyakan kluster redis menyokong keupayaan untuk menambah dan memadam nod secara telus untuk mengimbangi data pada masa jalan, tetapi sistem lain seperti partition klien dan proksi tidak menyokong ciri ini. Walau bagaimanapun, teknik yang dipanggil presharding boleh membantu dengan ini.
Jenis Partition
Redis mempunyai dua jenis partition. Katakan terdapat 4 kejadian Redis R0, R1, R2, R3 dan berbilang kunci yang mewakili pengguna seperti pengguna:1 dan pengguna:2 Untuk kunci yang diberikan, terdapat banyak cara yang berbeza untuk memilih contoh yang mana kunci harus disimpan. . Dalam erti kata lain, terdapat sistem yang berbeza untuk memetakan kunci tertentu kepada perkhidmatan Redis tertentu.
Pembahagian julat
Kaedah pembahagian julat yang paling mudah ialah dengan pembahagian julat, yang memetakan julat objek tertentu kepada tika Redis tertentu.
Sebagai contoh, pengguna dengan ID dari 0 hingga 10000 akan disimpan ke contoh R0, pengguna dengan ID dari 10001 hingga 20000 akan disimpan ke R1 dan seterusnya.
Kaedah ini boleh dilaksanakan dan digunakan dalam amalan. Kelemahannya ialah terdapat jadual pemetaan dari julat ke contoh. Jadual ini perlu diuruskan dan juga memerlukan jadual pemetaan untuk pelbagai objek, yang biasanya bukan kaedah yang baik untuk Redis.
Pembahagian cincang
Kaedah pembahagian cincang yang lain ialah pembahagian cincang. Ini berfungsi untuk sebarang kunci, dan tidak perlu menjadi object_name:
Tukar kunci kepada nombor menggunakan fungsi cincang, seperti menggunakan fungsi cincang crc32. Melaksanakan crc32(foobar) pada foobar kunci akan mengeluarkan integer yang serupa dengan 93024922.
Ambil modulo integer ini dan tukarkannya kepada nombor antara 0-3 integer ini boleh dipetakan kepada salah satu daripada empat kejadian Redis. 93024922 % 4 = 2, yang bermaksud foobar kunci harus disimpan dalam tika R2. Nota: Operasi modulo adalah untuk mengalih keluar baki bahagian, dan biasanya dilaksanakan menggunakan operator % dalam banyak bahasa pengaturcaraan.