Redis ialah pangkalan data storan nilai kunci yang sangat popular yang memainkan peranan penting dalam aplikasi web moden. Untuk memastikan ketersediaan dan kestabilan Redis yang tinggi, biasanya perlu menggunakan teknologi replikasi tuan-hamba. Pada masa yang sama, memandangkan nod induk perlu bertukar secara automatik kepada nod sandaran apabila ia gagal, kluster replikasi mempunyai keupayaan untuk sembuh sendiri. Berikut menerangkan cara PHP melaksanakan penukaran automatik replikasi tuan-hamba Redis.
1. Pengenalan kepada replikasi tuan-hamba Redis
Replikasi tuan-hamba Redis ialah teknologi yang menyalin data daripada satu pelayan Redis kepada berbilang pelayan hamba untuk mencapai pembacaan teragih dan kegagalan automatik. Nod induk menerima operasi tulis, manakala nod hamba hanya boleh menerima permintaan baca dan mereplikasi kemas kini daripada nod induk secara tidak segerak. Apabila nod utama gagal, ia akan bertukar secara automatik kepada nod sandaran untuk memastikan ketersediaan yang tinggi.
2. PHP melaksanakan replikasi induk-hamba Redis
Dalam PHP, kita boleh menggunakan pakej sambungan Redis untuk melaksanakan fungsi pensuisan automatik replikasi induk-hamba Redis. Di sini kami mengambil versi PHP 7.0.0 sebagai contoh. Mula-mula, pasang pakej sambungan Redis dalam persekitaran Linux:
sudo pecl install redis
atau muat turun dan pasang secara manual:
wget https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz tar xvzf 4.1.1.tar.gz cd phpredis-4.1.1/ phpize ./configure make sudo make install
Selepas pemasangan selesai, anda boleh menambah konfigurasi berikut pada php.ini untuk mendayakan pakej sambungan Redis:
extension=redis.so
Seterusnya, kami menggunakan kod PHP berikut untuk melaksanakan kaedah pensuisan automatik replikasi induk-hamba Redis:
//定义主从节点的参数 $redisMaster = [ 'host' => '127.0.0.1', 'port' => '6379' ]; $redisSlave1 = [ 'host' => '127.0.0.1', 'port' => '6380' ]; $redisSlave2 = [ 'host' => '127.0.0.1', 'port' => '6381' ]; //创建主节点连接并设置自动重连 $redis = new Redis(); $redis->pconnect($redisMaster['host'], $redisMaster['port']); $redis->setOption(Redis::OPT_AUTO_RECONNECT, true); //创建从节点连接并设置自动重连 $redisSlave1 = new Redis(); $redisSlave1->pconnect($redisSlave1['host'], $redisSlave1['port']); $redisSlave1->setOption(Redis::OPT_AUTO_RECONNECT, true); $redisSlave2 = new Redis(); $redisSlave2->pconnect($redisSlave2['host'], $redisSlave2['port']); $redisSlave2->setOption(Redis::OPT_AUTO_RECONNECT, true); //测试连接是否正常 if(!$redis->ping()){ //如果主节点出现故障,自动切换到备用节点 if(!$redisSlave1->ping() && !$redisSlave2->ping()){ //如果备用节点1和备用节点2都无法连接,则抛出异常 throw new Exception('Redis主备节点全部宕机'); }elseif($redisSlave1->ping()){ $redis = $redisSlave1; }elseif($redisSlave2->ping()){ $redis = $redisSlave2; } } //使用Redis主节点进行数据操作 $redis->set('foo', 'bar'); $value = $redis->get('foo'); echo $value;
Dalam kod di atas, kami mula-mula menentukan parameter daripada tiga nod Redis, termasuk nod induk dan Dua nod ganti. Kemudian nod induk dan dua sambungan nod hamba dibuat masing-masing, dan pilihan penyambungan semula automatik telah ditetapkan. Jika sambungan nod utama gagal, ia akan bertukar secara automatik ke nod sandaran 1 atau 2. Jika kedua-dua nod siap sedia 1 dan nod siap sedia 2 gagal disambungkan, pengecualian akan dilemparkan. Akhir sekali, gunakan nod induk Redis untuk operasi data.
3. Ringkasan
Replikasi tuan-hamba Redis ialah teknologi ketersediaan tinggi yang berkesan yang boleh memastikan bahawa pangkalan data Redis boleh membaiki sendiri dan terus berjalan dalam keadaan rosak dan tidak normal. Dalam PHP, anda boleh menggunakan sambungan Redis untuk melaksanakan fungsi pensuisan automatik replikasi tuan-hamba Redis dengan cepat. Melalui kaedah di atas, ketersediaan tinggi dan kestabilan Redis boleh dicapai dengan mudah, menyediakan perkhidmatan asas yang lebih mantap untuk aplikasi web moden.
Atas ialah kandungan terperinci Kaedah PHP untuk melaksanakan penukaran automatik replikasi tuan-hamba Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!