Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang penyepaduan dan penggunaan PHP dan Memcached

Penjelasan terperinci tentang penyepaduan dan penggunaan PHP dan Memcached

WBOY
WBOYasal
2023-06-25 13:04:40941semak imbas

Dengan pembangunan aplikasi web, semakin banyak aplikasi akan menggunakan sistem caching memori yang lengkap untuk memberikan prestasi yang lebih baik dan kebolehskalaan yang lebih tinggi. Dalam banyak kes, Memcached menjadi penyelesaian pilihan. Artikel ini akan memperkenalkan penggunaan bersepadu PHP dan Memcached, serta beberapa petua penggunaan yang berkaitan.

Memcached ialah sistem caching objek dalam memori berprestasi tinggi yang boleh digunakan untuk mempercepatkan aplikasi web dinamik. Memcached pada asalnya dicipta oleh Brad Fitzpatrick dengan tujuan utamanya adalah untuk laman web rangkaian sosial LiveJournalnya. Memcached direka bentuk sebagai sistem caching teragih, jadi ia boleh berskala dan berprestasi tinggi.

Menggunakan Memcached dalam PHP

Mudah untuk mengintegrasikan aplikasi PHP dan Memcached melalui sambungan PECL dalam PHP. Berikut ialah contoh mudah yang menggunakan PHP untuk melaksanakan operasi dapatkan dan tetapkan asas Memcached:

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//存储数据
$memcached->set("key1", "value1");

//获取数据
$value = $memcached->get("key1");
echo $value;
?>

Dalam contoh di atas, kami mula-mula menyambung ke pelayan Memcached menggunakan objek Memcached, dan kemudian menggunakan set() Fungsi ini menyimpan pasangan nilai kunci dalam cache, dan akhirnya menggunakan fungsi <code>get() untuk mendapatkan nilai kunci daripada cache. Sangat mudah dan intuitif. set()函数将一个key-value对存储到缓存中,最后使用get()函数从缓存中获取key的值。非常简单和直观。

在应用程序中使用Memcached

在实际应用程序中,使用Memcached的最常见方式是将其用于缓存和提高性能的数据,例如数据库查询结果、模板和其他计算密集型计算结果等。Memcached还支持将其作为锁定系统来控制并发请求,以避免冲突。

以下是一个使用Memcached缓存MySQL查询结果的示例:

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//查询MySQL数据库
$results = mysqli_query($con, "SELECT * FROM users WHERE status=1");

//循环结果
while($row = mysqli_fetch_array($results)) {
   //将结果存储到缓存中
   $memcached->set($row['user_id'], $row);
}

//关闭MySQL连接
mysqli_close($con);

//获取结果
$user_id = 123;
$result = $memcached->get($user_id);
?>

在上述示例中,我们首先连接了Memcached服务器,并查询了MySQL数据库,将结果存储在缓存中。然后我们获取了一个特定的结果。如果这个结果已经被缓存过了,那么它将被立即返回,避免了重复查询这个结果的需要。

在实际应用程序中,当使用Memcached缓存巨大的数据对象时,我们建议使用Memcached的分布式机制。这一点将在下面的部分进行介绍。

使用Memcached的一些技巧

以下是一些使用Memcached的技巧,以提高性能和可靠性:

  1. 利用Memcached作为锁定系统

当并发请求同时访问共享资源时,可能会发生竞态条件。在这种情况下,Memcached可以用作分布式锁定系统,以避免并发请求冲突。比如我们要更新一个计数器,那么就可以使用Memcached作为锁定系统。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//以自增方式计数
$key = "counter";
$counter = $memcached->increment($key);

//获取计数器结果
echo "Counter: ".$counter;
?>

在上述示例中,我们使用Memcached对象连接了Memcached服务器,并使用increment()函数将计数器的值自增1。这样就能避免多个并发请求对计数器的竞争。

  1. 利用选项和过期时间

Memcached不仅可以存储数据,还可以使用附加选项来控制缓存数据的行为。使用过期时间选项,可以确定每个键值对的存储有效期限,从而加快缓存的轮换。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//设置过期时间
$memcached->set("key1", "value1", 3600);

//获取具有过期时间的键值对
$value = $memcached->get("key1");

//除了过期时间之外,可以使用其他选项
$memcached->set("key1", "value1", 3600, 0);
$memcached->set("key1", "value1", 0, 100);
?>

在上述示例中,我们首先使用set()函数存储键值对,并设置了一个过期时间。然后我们使用get()函数获取这个键值对。如果缓存中的数据已经过期,则返回空值。

  1. 利用Memcached的扩展性

Memcached的设计目标之一是其可扩展性。这一点是通过将Memcached服务嵌入到内部集群中实现的,以同时利用多台计算机提供缓存服务。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServers(array(
   array("server1", 11211, 33),
   array("server2", 11211)
));

//保存数据到Memcached服务器
$memcached->set("key1", "value1");

//从Memcached服务器获取数据
$value = $memcached->get("key1");
?>

在上述示例中,我们使用addServers()函数设置多台Memcached服务器,以便将请求分发到多个服务器。然后,我们使用set()get()

Menggunakan Memcached dalam Aplikasi

Dalam aplikasi sebenar, cara paling biasa untuk menggunakan Memcached ialah menggunakannya untuk caching dan data yang meningkatkan prestasi, seperti hasil pertanyaan pangkalan data, templat dan hasil pengiraan intensif pengiraan yang lain. Memcached juga menyokongnya sebagai sistem penguncian untuk mengawal permintaan serentak untuk mengelakkan konflik.

Berikut ialah contoh penggunaan Memcached untuk cache hasil pertanyaan MySQL: 🎜rrreee🎜Dalam contoh di atas, kami mula-mula menyambung ke pelayan Memcached dan menanyakan pangkalan data MySQL untuk menyimpan keputusan dalam cache. Kemudian kita mendapat hasil tertentu. Jika keputusan telah dicache, ia akan dikembalikan serta-merta, mengelakkan keperluan untuk menanyakan keputusan berulang kali. 🎜🎜Dalam aplikasi sebenar, apabila menggunakan Memcached untuk cache objek data yang besar, kami mengesyorkan menggunakan mekanisme pengedaran Memcached. Ini akan dibincangkan dalam bahagian berikut. 🎜🎜Beberapa petua untuk menggunakan Memcached🎜🎜Berikut ialah beberapa petua untuk menggunakan Memcached untuk meningkatkan prestasi dan kebolehpercayaan: 🎜
  1. Gunakan Memcached sebagai sistem penguncian
🎜Apabila serentak meminta akses serentak Apabila berkongsi sumber, keadaan perlumbaan boleh berlaku. Dalam kes ini, Memcached boleh digunakan sebagai sistem penguncian yang diedarkan untuk mengelakkan permintaan serentak yang bercanggah. Sebagai contoh, jika kita ingin mengemas kini kaunter, kita boleh menggunakan Memcached sebagai sistem penguncian. 🎜rrreee🎜Dalam contoh di atas, kami menggunakan objek Memcached untuk menyambung ke pelayan Memcached dan menggunakan fungsi increment() untuk menambah nilai pembilang sebanyak 1. Ini mengelakkan persaingan untuk kaunter daripada berbilang permintaan serentak. 🎜
  1. Leverage pilihan dan masa tamat tempoh
🎜Memcached bukan sahaja menyimpan data, tetapi anda juga boleh menggunakan pilihan tambahan untuk mengawal gelagat data cache. Menggunakan pilihan masa tamat tempoh, anda boleh menentukan berapa lama setiap pasangan nilai kunci disimpan, sekali gus mempercepatkan putaran cache. 🎜rrreee🎜Dalam contoh di atas, kami mula-mula menggunakan fungsi set() untuk menyimpan pasangan nilai kunci dan menetapkan masa tamat tempoh. Kemudian kami menggunakan fungsi get() untuk mendapatkan pasangan nilai kunci ini. Jika data dalam cache telah tamat tempoh, nilai nol dikembalikan. 🎜
  1. Mengambil kesempatan daripada kebolehskalaan Memcached
🎜Salah satu matlamat reka bentuk Memcached ialah kebolehskalaannya. Ini dicapai dengan membenamkan perkhidmatan Memcached ke dalam kelompok dalaman untuk memanfaatkan berbilang komputer untuk menyediakan perkhidmatan caching secara serentak. 🎜rrreee🎜Dalam contoh di atas, kami menggunakan fungsi addServers() untuk menyediakan berbilang pelayan Memcached untuk mengedarkan permintaan kepada berbilang pelayan. Kami kemudian menggunakan fungsi set() dan get() untuk menyimpan dan mendapatkan semula data ke dalam pelayan. Mekanisme pengedaran ini adalah salah satu mekanisme skalabiliti Memcached yang paling berkuasa. 🎜🎜Kesimpulan🎜🎜Memcached ialah sistem caching objek dalam memori berprestasi tinggi yang boleh digunakan untuk mempercepatkan aplikasi web dinamik. Sambungan PHP memudahkan untuk menyepadukan aplikasi PHP ke dalam Memcached, meningkatkan prestasi aplikasi dan kebolehskalaan. Menggunakan beberapa teknik Memcached boleh membantu kami menggunakan perkhidmatan Memcached dengan lebih baik dan meningkatkan prestasi dan kebolehpercayaan aplikasi. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang penyepaduan dan penggunaan PHP dan Memcached. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn