Redis dan penyelesaian kluster PHP: Bagaimana untuk mencapai ketersediaan dan kebolehskalaan yang tinggi
Pengenalan:
Redis ialah pangkalan data dalam memori berprestasi tinggi sumber terbuka yang sering digunakan untuk membina aplikasi yang pantas dan berskala. Sebagai bahasa skrip sebelah pelayan yang popular, PHP boleh digunakan dengan Redis untuk mencapai ketersediaan tinggi dan penyelesaian kluster berskala. Artikel ini akan memperkenalkan cara menggunakan Redis dan PHP untuk membina kluster ketersediaan tinggi dan berskala serta menerangkan secara terperinci melalui contoh kod.
1. Pembinaan kelompok Redis
Pemasangan dan konfigurasi Redis
Pertama, Redis perlu dipasang pada setiap pelayan. Redis boleh dipasang melalui arahan berikut:
$ sudo apt-get install redis-server
Selepas pemasangan selesai, beberapa konfigurasi diperlukan. Dalam fail konfigurasi Redis bagi setiap pelayan, ubah suai pilihan berikut:
bind <服务器IP地址> port <端口号>
Buat Kluster Redis
Gunakan alat dalaman Redis redis-trib.rb untuk mencipta gugusan Redis. Jalankan arahan berikut pada salah satu pelayan:
$ redis-trib.rb create --replicas <副本数> <服务器1>:<端口> <服务器2>:<端口> ...
Contoh:
$ redis-trib.rb create --replicas 1 192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379
Arahan di atas akan mencipta gugusan dengan berbilang nod Redis dan secara automatik menetapkan slot pada setiap nod.
2. Pelaksanaan penyelesaian kelompok PHP
Pasang sambungan PHP
Untuk berkomunikasi dengan kelompok Redis, anda perlu memasang sambungan Redis dalam PHP. Sambungan Redis boleh dipasang melalui arahan berikut:
$ sudo apt-get install php-redis
Sambung ke Kluster Redis
Gunakan kelas RedisCluster yang disediakan oleh sambungan Redis untuk menyambung ke gugusan Redis. Berikut ialah contoh kod:
<?php $redis = new RedisCluster(null, ['192.168.1.101:6379', '192.168.1.102:6379', '192.168.1.103:6379']); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
Kod di atas mencipta objek RedisCluster dan menghantar alamat IP dan port gugusan Redis sebagai parameter. Objek kemudiannya boleh digunakan untuk melakukan pelbagai operasi seperti set() dan get().
Mencapai ketersediaan tinggi
Untuk mencapai ketersediaan tinggi, Redis Sentinel boleh digunakan dalam PHP untuk memantau status kesihatan gugusan Redis dan melakukan failover secara automatik. Berikut ialah contoh kod:
<?php $redisSentinel = new Redis(); $redisSentinel->pconnect('192.168.1.101', 26379); $master = $redisSentinel->rawCommand('SENTINEL', 'get-master-addr-by-name', 'mymaster'); $redis = new Redis(); $redis->pconnect($master[0], $master[1]); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
Kod di atas menggunakan Redis Sentinel untuk mendapatkan alamat IP dan port nod induk gugusan Redis. Kemudian, cipta objek Redis yang disambungkan ke nod induk melalui sambungan Redis dan lakukan operasi yang berkaitan.
Mencapai kebolehskalaan
Untuk mencapai kebolehskalaan, Redis Cluster boleh digunakan dalam PHP untuk memecah data secara automatik. Berikut ialah contoh kod:
<?php $redis = new RedisCluster(null, [ '192.168.1.101:6379', '192.168.1.102:6379', '192.168.1.103:6379', ], 2, $config = []); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
Kod di atas menggunakan kelas RedisCluster untuk menyambung ke gugusan Redis. Parameter pertama adalah batal untuk menggunakan algoritma pengedaran slot lalai, parameter kedua ialah alamat IP dan port nod Redis, parameter ketiga ialah bilangan serpihan, dan parameter terakhir ialah pilihan konfigurasi.
Ringkasan:
Melalui kaedah di atas, kita boleh menggunakan Redis dan PHP untuk membina penyelesaian kluster dengan ketersediaan tinggi dan berskala. Selepas kluster Redis dibina, mudah untuk berkomunikasi dengan kluster melalui sambungan Redis, dan Kluster Redis Sentinel dan Redis boleh digunakan untuk memastikan ketersediaan dan kebolehskalaan yang tinggi. Semoga artikel ini bermanfaat kepada anda.
Atas ialah kandungan terperinci Penyelesaian kluster Redis dan PHP: bagaimana untuk mencapai ketersediaan dan kebolehskalaan yang tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!