Dengan pembangunan aplikasi web, kerumitan pemprosesan data semakin tinggi. Untuk menyediakan kebolehskalaan dan prestasi yang lebih baik, banyak aplikasi telah menggunakan pangkalan data NoSQL. Memcached ialah cache dalam memori NoSQL yang popular yang boleh meningkatkan masa tindak balas aplikasi web dengan ketara sambil turut menyediakan ketersediaan data yang tinggi.
Walau bagaimanapun, apabila aplikasi anda berkembang, kapasiti storan satu contoh Memcached mungkin mencapai hadnya. Dalam kes ini, teknologi pembahagian pangkalan data Memcached perlu digunakan untuk menyebarkan data merentasi berbilang pelayan. Dalam artikel ini, kita akan belajar bagaimana untuk melaksanakan pembahagian pangkalan data Memcached menggunakan PHP.
Sharding pelayan Memcached
Dalam Memcached, fungsi cincang digunakan untuk memetakan kunci data ke pelayan tertentu. Fungsi hash boleh menjadi MD5, CRC32, dsb. Apabila data ditambah atau dikemas kini, Memcached menggunakan fungsi cincang untuk mengira kunci dan menentukan pelayan yang hendak digunakan. Apabila menggunakan pembahagian pangkalan data Memcached, kita perlu memetakan kunci ke pelayan tertentu menggunakan kaedah yang sama seperti fungsi cincang. Ini boleh dilakukan dengan mengikut langkah:
$servers = array(
'192.168.1.101:11211', // Server 1 '192.168.1.102:11211', // Server 2 '192.168.1.103:11211' // Server 3
);
$hash = md5('mykey');
gunakan kod berikut untuk melaksanakan:
$hash = md5('mykey');
$hash_number = intval("0x".substr( $hash, 0, 8));
$server_index = $hash_number % count($servers);
$server = $servers[$server_index];
Dalam contoh ini, kita mula-mula menggunakan MD5 hash Hash memetakan "mykey" kepada nilai hash. Kami kemudian mengira nilai integer tidak bertanda 32-bit dan mengira modulus nilai itu menggunakan panjang tatasusunan pelayan. Ini akan memberi kami indeks pelayan dan kami boleh menggunakan indeks itu untuk mendapatkan alamat IP pelayan dan nombor port yang betul daripada senarai pelayan.
$memcached = Memcached baharu();
$memcached->addServers($servers);
$hash = md5('mykey');
$hash_number = intval("0x".substr($hash, 0, 8));
$server_index = $hash_number % count($servers);
$server = $servers[$server_index] ;
$memcached->setByKey($server, 'mykey', 'data', 60);
Dalam contoh ini, kami mula-mula memanggil addServers() kelas Memcached menggunakan tatasusunan pelayan Kaedah yang menentukan senarai pelayan untuk digunakan. Kami kemudian menggunakan cincang dan pelayan untuk memanggil kaedah setByKey() untuk menyimpan data ke dalam pelayan yang betul. Kami juga menyediakan masa tamat tempoh (60 saat).
$hash = md5('mykey');
$hash_number = intval("0x".substr($hash, 0, 8));
$server_index = $hash_number % count($servers);
$server = $servers[$server_index];
$data = $memcached->getByKey($server, 'mykey');
Dalam contoh ini, kami menggunakan nilai cincang dan pelayan untuk memanggil kaedah getByKey() untuk mendapatkan semula data daripada pelayan yang betul. Jika kunci tidak wujud, mengembalikan null.
Ringkasan
Apabila menggunakan Memcached, anda boleh menggunakan teknologi sharding untuk menyimpan data pada berbilang pelayan. Menggunakan PHP, kita boleh menggunakan kelas Memcached dalam perpustakaan sambungan Memcached, yang menyediakan pelbagai kaedah untuk menambah pelayan, menyediakan dan mendapatkan data. Menggunakan fungsi cincang, kami boleh mengira cincang kunci dan memetakannya ke pelayan yang betul. Ingat, pilihan fungsi cincang dan peruntukan selang akan secara langsung mempengaruhi keseimbangan dan prestasi data.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pembahagian pangkalan data Memcached dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!