Saya ingin menggunakan memcached
http://www.danga.com/memcached/
Saya telah menginstalnya yum install memcached
Tapi sekarang saya harus terhubung ke PHP, dan ada ekstensi bernama memcache dan satu bernama memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
Bisakah seseorang mengarahkan saya ke arah yang benar di sini .. mana yang akan bekerja?
Juga, apakah saya perlu membuka port apa saja agar bisa berfungsi meskipun itu lokal? Setelah menjalankannya, saya mencoba telnet 127.0.0.1 11211 dan koneksi saya ditolak.
Jawaban:
Jawaban singkatnya: Apa pun yang Anda cari, tetapi pilihan pertama saya adalah memcache (yang pertama kali Anda daftarkan), murni berdasarkan penggunaan tata nama yang benar.
Nah, inilah cara saya sampai pada kesimpulan itu:
Berikut ini adalah latar belakang cepat dalam konvensi penamaan (bagi mereka yang tidak terbiasa), yang menjelaskan frustrasi oleh penanya pertanyaan: Untuk banyak aplikasi * nix, karya yang melakukan pekerjaan backend disebut "daemon" (pikirkan "layanan" di Windows- land), sedangkan antarmuka atau aplikasi klien adalah apa yang Anda gunakan untuk mengontrol atau mengakses daemon. Daemon paling sering dinamai sama dengan klien, dengan huruf "d" ditambahkan padanya. Misalnya "imap" akan menjadi klien yang terhubung ke daemon "imapd".
Konvensi penamaan ini jelas dipatuhi oleh memcache ketika Anda membaca pengantar modul memcache (perhatikan perbedaan antara memcache dan memcached dalam kutipan ini):
Frustasi di sini disebabkan oleh penulis ekstensi PHP yang diberi nama memcached , karena ia memiliki nama yang sama dengan daemon aktual yang disebut memcached . Perhatikan juga bahwa dalam pengantar memcached (modul php) , ia menyebutkan libmemcached , yang merupakan shared library (atau API) yang digunakan oleh modul untuk mengakses daemon memcached:
Singkatnya, keduanya secara fungsional sama, tetapi mereka hanya memiliki penulis yang berbeda, dan yang satu lebih sederhana disebutkan lebih tepat daripada yang lain.
sumber
memcached
mendukung cas token misalnya,memcache
tidak. Jika Anda membutuhkannya, Anda tahu mana (nama buruk atau tidak) untuk memilih.Anda mungkin ingin melihat Perbandingan Klien PHP .
Versi singkat: Keduanya akan berfungsi, dan untuk sebagian besar kasus, keduanya akan baik-baik saja.
Mengenai masalah lain: Ya, Anda harus bisa melakukannya
telnet 127.0.0.1 11211
. Sangat sedikit firewall yang akan memblokir localhost untuk berkomunikasi dengan dirinya sendiri. Jika Anda tidak dapat terhubung, pastikan memcached benar-benar berjalan dengan melakukanps auxwww | grep memcached
, yang juga akan menunjukkan kepada Anda argumen baris perintah yang digunakan untuk memulai memcached. Salah satu argumen harus-p 11211
atau nomor port lain. Lihatman memcached
makna semua argumen yang mungkin.sumber
ps auxwww | grep memcached
?Seperti yang ditunjukkan oleh tautan Nate, keduanya bekerja dengan sangat baik untuk penggunaan sederhana. Namun, memcached mendukung lebih banyak fitur yang memungkinkan Anda untuk mendapatkan kinerja maksimal dari memcached. Protokol biner mengurangi jumlah data yang diperlukan untuk dikirim antara klien dan server. Multiget dan multiset memungkinkan Anda untuk mendapatkan / mengatur banyak item sekaligus. Jika Anda merasa perlu lebih banyak tenaga dari memcache, memcached adalah modul yang lebih baik. Penggunaan libmemcached menunjukkan bahwa perpustakaan itu sendiri mungkin lebih dioptimalkan daripada versi PHP saja.
Memcached adalah modul yang lebih baru dibandingkan dengan memcache, yang baru dirilis 8 bulan lalu. Jika Anda perlu menargetkan versi PHP yang lebih lama, maka Anda hanya bisa menggunakan memcache.
sumber
Yang lebih tua, buggier disebut
php-memcache
karena itu sepertinya nama yang paling tepat. Versi yang lebih baru dan lebih baik yang dikembangkan secara independen oleh orang-orang di Digg malah disebutphp-memcached
untuk kepentingan disambiguasi.Orang-orang yang akan merekomendasikan Anda memilih satu dari yang lain hanya berdasarkan kebenaran nama yang benar-benar tidak memiliki bisnis yang menawarkan saran teknis.
sumber
Setelah menggunakan php-memcache baru-baru ini, saya harus mengarahkan Anda ke php-memcached.
Berikut adalah beberapa alasan dari atas kepala saya ..
1) Tidak ada getErrorCode () atau metode yang setara, jadi jika get () mengembalikan FALSE, Anda tidak akan tahu apakah itu karena nilai yang disimpan dalam memcache IS false, atau apakah ada semacam masalah.
2) Algoritme hashing-nya untuk hashing yang konsisten tampaknya berbeda dari implementasi lainnya, seperti banyak pustaka klien yang dibangun dari libmemcached. Ini berarti bahwa jika Anda ingin menggunakan cluster memcache yang sama dengan beberapa bahasa, Anda mungkin akan memiliki masalah di mana Anda akan menyimpan nilai dengan klien PHP, dan klien lain tidak akan menemukannya.
sumber
Keduanya memiliki masalah pada hari ini. PECL / memcache sudah tua dan dapat diandalkan, dengan beberapa pengecualian jika sudah usang. PECL / memcached 1.x adalah beta di terbaik. Beberapa fungsi tidak berurusan dengan kunci numerik, itu bocor koneksi saat menggunakan koneksi persisten. Beberapa (semua?) Sedang diperbaiki di GitHub dan akan dirilis pada titik 2.x, tetapi tidak hari ini. Untuk ulasan yang lebih rinci lihat http://brian.moonspot.net/php-memcached-issues
sumber
Saya sedang mengerjakan buku "Expert PHP dan MySQL". Saya menulis hal yang hampir sama tentang perbedaan. Apa yang saya rekomendasikan adalah PECL / memcached. # 1 - itu membungkus di sekitar C library berperforma berfitur lengkap dengan baik # 2 - ini lebih baru dipertahankan. # 3 - lebih banyak fitur. Tidak meremehkan PECL / memcache.
sumber
Saya memiliki beberapa masalah yang cukup parah dengan Drupal 6 dan php-pecl-memcached di mana waktu respons tertunda hingga 5 ms per panggilan dan akan menyebabkan satu situs tertentu membuat panggilan 5x lebih banyak daripada sebelum perubahan ke php-pecl-memcached . Mengubah ke php-pecl-memcache memperbaiki semua masalah; panggilan latensi dan tambahan.
Jawaban ini di sini hanya untuk membantu mereka yang menggunakan Drupal 6 dan mungkin Drupal 7.
sumber
Dan ada klien lain untuk memcached, lihat http://code.google.com/p/memcached/wiki/Clients
Potong & rekatkan dari web:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached "Ekstensi PHP untuk berinteraksi dengan memcached melalui pustaka libmemcached" Ekstensi ini menggunakan pustaka libmemcached untuk menyediakan API untuk berkomunikasi dengan server memcached. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "memcached extension" Memcached adalah daemon caching yang dirancang khusus untuk aplikasi web dinamis untuk mengurangi beban basis data dengan menyimpan objek dalam memori. Ekstensi ini memungkinkan Anda untuk bekerja dengan memcached melalui antarmuka OO dan prosedural yang berguna.
http://code.google.com/p/memcached/wiki/PHPClientComparison
sumber