Rumah > Artikel > pembangunan bahagian belakang > Menggunakan Redis untuk melaksanakan storan sharded dalam PHP
Dengan pembangunan berterusan aplikasi Internet, permintaan untuk penyimpanan dan pemprosesan data terus meningkat. Walau bagaimanapun, pangkalan data hubungan tradisional mempunyai kesesakan tertentu dalam prestasi dan kebolehskalaan. Untuk menyelesaikan masalah ini, pangkalan data NoSQL wujud. Antaranya, Redis, sebagai pangkalan data NoSQL berkelajuan tinggi, digunakan secara meluas dalam bidang seperti caching, baris gilir mesej, dan storan nilai kunci. Artikel ini akan memperkenalkan secara terperinci cara menggunakan PHP untuk menyambung ke Redis dan melaksanakan storan berpecah untuk meningkatkan prestasi baca dan tulis serta kebolehskalaan.
1. Pengetahuan asas tentang Redis
Redis menyokong pelbagai struktur data, termasuk rentetan, jadual cincang dan senarai , set dan set yang dipesan, dsb. Dalam aplikasi, Redis biasanya digunakan sebagai cache untuk mengurangkan tekanan pelayan dengan menyimpan data yang biasa digunakan.
Redis menyokong dua kaedah kegigihan: RDB dan AOF. RDB dilaksanakan dengan kerap menyimpan data dalam ingatan kepada syot kilat pada cakera, manakala AOF merekodkan semua operasi yang ditulis kepada Redis supaya ia boleh dilaksanakan semula apabila Redis dimulakan semula.
Redis menyokong replikasi tuan-hamba, yang boleh meningkatkan prestasi dan ketersediaan bacaan dengan berkesan. Replikasi induk-hamba membolehkan pelayan induk menyegerakkan data kepada berbilang pelayan hamba, dengan itu mengurangkan tekanan pada pelayan induk dan meningkatkan ketersediaan sistem. Apabila pelayan induk gagal, ia secara automatik beralih ke pelayan hamba supaya sistem boleh pulih dengan cepat.
2. PHP bersambung ke Redis
Anda boleh menyambung ke Redis melalui sambungan PECL atau sambungan redis terbina dalam. Seterusnya, penggunaan kedua-duanya akan diperkenalkan secara terperinci.
Pelanjutan PECL menyediakan ciri yang lebih maju, seperti gugusan Redis dan mod sentinel, tetapi memerlukan kompilasi dan pemasangan manual.
1) Pasang sambungan PECL
Mula-mula anda perlu memuat turun sambungan Redis, kemudian masukkan direktori sambungan dan laksanakan arahan berikut:
phpize ./configure make make install
2) Sambung ke Redis
Connect Redis perlu menetapkan alamat IP dan port pelayan Redis. Selepas sambungan diwujudkan, operasi berkaitan boleh dilakukan.
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->set('name', 'redis'); $name = $redis->get('name'); echo $name;
sambungan redis ialah sambungan rasmi untuk PHP 5.5 dan ke atas Ia sangat mudah untuk dipasang dan digunakan, serta tidak memerlukan kompilasi dan pemasangan manual .
1) Pasang sambungan redis
Boleh dipasang melalui yum:
yum install php-redis
Anda juga boleh memuat turun pakej pemasangan secara manual, kemudian nyahzip dan pasang:
wget https://github.com/phpredis/phpredis/archive/5.2.3.tar.gz tar -zxvf 5.2.3.tar.gz cd phpredis-5.2.3 phpize ./configure make && make install
2) Sambungkan Redis
Menyambung ke Redis juga memerlukan penetapan alamat IP dan port pelayan Redis. Selepas sambungan diwujudkan, operasi berkaitan boleh dilakukan.
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->set('name', 'redis'); $name = $redis->get('name'); echo $name;
3. Storan pecahan Redis
Apabila jumlah data Redis sangat besar, prestasi satu nod mungkin mencapai kesesakan. Untuk meningkatkan prestasi dan ketersediaan, storan sharded boleh dilaksanakan dengan menyebarkan data merentas berbilang nod.
Storan pecahan memperuntukkan data kepada nod yang berbeza dalam bentuk yang berbeza dan setiap nod menyimpan sebahagian daripada data. Dengan cara ini, pelanggan boleh mencari data yang sepadan pada setiap nod dengan mengira nilai cincang kunci.
Pencincangan konsisten ialah algoritma yang digunakan untuk menyelesaikan kesesakan prestasi teragih bagi cache atau pangkalan data. Dengan memetakan nilai cincang kekunci pada gelang, nod terdekat ditemui mengikut arah jam pada gelang sebagai nod storan data. Apabila menambah atau memadam nod, nod bersebelahan akan terjejas, tetapi nod lain tidak akan terjejas.
Storan serpihan Redis boleh dilaksanakan melalui algoritma pencincangan yang konsisten. Langkah-langkah khusus adalah seperti berikut:
1) Kira nilai cincang kunci dan cari nod yang sepadan.
$server = $nodes[crc32($key) % count($nodes)];
2) Sambungkan nod yang sepadan dan lakukan operasi yang berkaitan.
$redis = new Redis(); $redis->connect($server['host'], $server['port']); $redis->set($key, $value);
3) Apabila nod ditambah atau dipadamkan, nilai cincangan kunci boleh dikira semula dan dipetakan melalui algoritma pencincangan yang konsisten untuk mengagihkan data secara sama rata ke nod baharu dan memadamkan data nod asal.
4. Proses pelaksanaan
Di bawah, kami akan memperkenalkan secara terperinci cara menggunakan PHP untuk menyambung ke Redis untuk melaksanakan storan berpecah.
Persekitaran yang digunakan dalam eksperimen ini adalah seperti berikut:
wget https://github.com/phpredis/phpredis/archive/5.2.3.tar.gz tar -zxvf 5.2.3.tar.gz cd phpredis-5.2.3 phpize ./configure make && make install
Kod untuk menyambung ke Redis dan melaksanakan storan sharded adalah seperti berikut:
<?php // Redis节点列表 $nodes = array( array('host' => '127.0.0.1', 'port' => 6379), array('host' => '127.0.0.1', 'port' => 6380), ); // 计算键的散列值,并找到对应的节点 function getServer($key, $nodes) { $server = $nodes[crc32($key) % count($nodes)]; return $server; } // 连接对应的节点,进行相关操作 function redis($key, $value, $nodes) { $server = getServer($key, $nodes); $redis = new Redis(); $redis->connect($server['host'], $server['port']); $redis->set($key, $value); return true; } // 测试代码 $key = 'name'; $value = 'redis'; redis($key, $value, $nodes); $name = redis->get($key); echo $name; ?>
5 Ringkasan
Artikel ini memperincikan cara menggunakan PHP untuk disambungkan Redis dan gunakan pencincangan yang konsisten Algoritma melaksanakan storan berpecah untuk meningkatkan prestasi baca dan tulis serta kebolehskalaan. Sebagai pangkalan data NoSQL berkelajuan tinggi, Redis digunakan secara meluas dan mempunyai prestasi dan ketersediaan yang sangat baik. Dalam aplikasi sebenar, adalah perlu untuk memilih penyelesaian storan sharded yang sesuai berdasarkan keadaan tertentu dan memberi perhatian kepada keserasian dan kebolehselenggaraan.
Atas ialah kandungan terperinci Menggunakan Redis untuk melaksanakan storan sharded dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!