Inilah hal yang mengejutkan dalam hal PHP dan MySQL (saya tidak yakin tentang bahasa lain) - tidak menyimpan barang ke memcached atau Redis sebenarnya lebih cepat. Lebih cepat. Pada dasarnya, jika Anda baru saja membuat aplikasi dan menanyakan MySQL - Anda akan mendapatkan lebih banyak darinya.
Sekarang untuk bagian "mengapa".
InnoDB
, mesin default, adalah mesin yang luar biasa. Secara khusus, itu manajemen memori (alokasi dan apa yang tidak) lebih unggul dari solusi penyimpanan memori. Itu faktanya, Anda dapat mencarinya atau mengambil kata-kata saya - setidaknya, performanya akan sebaik Redis.
Sekarang apa yang terjadi di aplikasi Anda - Anda meminta MySQL dan menyimpan hasilnya ke dalam redis. Namun, MySQL juga cukup pintar untuk menyimpan hasil cache. Apa yang baru saja Anda lakukan adalah membuat deskriptor file tambahan yang diperlukan untuk terhubung ke Redis. Anda juga menggunakan beberapa penyimpanan (RAM) untuk meng-cache hasil yang telah di-cache MySQL.
Inilah bagian menarik lainnya - cara yang lebih disukai untuk menyajikan skrip PHP adalah dengan menggunakan php-fpm
- jauh lebih cepat daripada mod_*
any omong kosong di luar sana. Sampai ke intinya, php-fpm
adalah proses supervisor yang memunculkan proses anak. Mereka tidak dimatikan setelah skrip disajikan, yang berarti mereka men-cache koneksi ke MySQL - terhubung sekali, gunakan beberapa kali. Pada dasarnya, jika Anda menyajikan skrip menggunakan php-fpm
, mereka akan menggunakan kembali koneksi yang sudah dibuat ke MySQL, artinya Anda tidak akan membuka dan menutup koneksi untuk setiap permintaan - ini sangat ramah sumber daya dan memungkinkan Anda memiliki koneksi secepat kilat ke MySQL. MySQL, karena hemat memori dan memiliki hasil yang di-cache jauh lebih cepat daripada Redis.
Sekarang apa artinya semua ini bagi Anda - memiliki pengaturan yang tepat memungkinkan Anda memiliki kode kecil yang sederhana, mudah, tidak melibatkan Redis dan menghilangkan semua masalah yang mungkin Anda miliki dengan pembatalan cache dan apa yang tidak dan tidak akan Anda sia-siakan memori Anda untuk memuat data yang sama dua kali.
Bahan yang Anda butuhkan agar ini berfungsi:
php-fpm
MySQL
danInnoDB
tabel berbasis dan yang terpenting - RAM yang cukup daninnodb_buffer_pool_size
yang telah diubah variabel. Itu mengontrol berapa banyak RAM yang diizinkan dialokasikan InnoDB untuk tujuannya - semakin besar semakin baik.
Anda menghilangkan Redis dari permainan, Anda menjaga kode Anda tetap sederhana dan mudah dirawat, Anda tidak menggandakan data, Anda tidak memperkenalkan sistem tambahan ke permainan dan Anda membiarkan perangkat lunak yang dimaksudkan untuk mengurus data melakukan tugasnya. Pertukaran yang cukup murah untuk kegunaan maksimal, bahkan jika Anda mengompilasi semua perangkat lunak dari awal - tidak akan memakan waktu lebih dari satu jam atau lebih untuk menjalankannya.
Atau, Anda dapat mengabaikan apa yang saya tulis dan mencari solusi menggunakan Redis.