自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用PHP創(chuàng)建Memcached數(shù)據(jù)庫(kù)客戶端

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)運(yùn)維
本文將為大家解釋的是PHP環(huán)境下如何操作Memcached數(shù)據(jù)庫(kù)的相關(guān)數(shù)據(jù),這也是Web高性能開發(fā)的一部分。

Memcached 是一個(gè)鍵值存儲(chǔ)系統(tǒng),它將關(guān)鍵數(shù)據(jù)存儲(chǔ)在內(nèi)存中,大大減少存取數(shù)據(jù)的時(shí)間。使用Memcached的好處不言而喻,它不僅減少了系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)的壓力,而且提高系統(tǒng)的反應(yīng)速度。至于什么樣的系統(tǒng)需要使用memcache,筆者建議數(shù)據(jù)量大,訪問(wèn)頻繁系統(tǒng)可以采取Memcached作為緩存的中間層。

使用Memcached的缺點(diǎn)除了增加程序的代碼量,還有就是不能保證數(shù)據(jù)庫(kù)的實(shí)時(shí)性,另外在第一次初始化數(shù)據(jù)庫(kù)會(huì)需要額外的時(shí)間。但是這些的缺點(diǎn)比起它的優(yōu)點(diǎn)是很微不足道。

PHP帶有操作Memcached的擴(kuò)展,它提供一組函數(shù)來(lái)操作Memcached服務(wù)器,將他們簡(jiǎn)單分一下類:

1。Memcached的連接函數(shù)(connect, pconnect)

2。memcahced的操作函數(shù)(set, get, delete, replace, flush)

3。多服務(wù)器配置函數(shù)(addServer)

4。狀態(tài)監(jiān)控函數(shù)(getStats.....)

下面摘一段代碼,給大家一個(gè)直觀的印象:(假設(shè)Memcached安裝在172.10.10.10上面,端口號(hào)12121)

 

  1. $memcache = new Memcached();  
  2. $memcahce->connect('172.10.10.10', 12121);  
  3. $memcache->set('Key''Value');  
  4. $memcache->get('Key'); 

 

上面的主要完成了Memcached的簡(jiǎn)單操作流程:連接Memcached服務(wù)器,設(shè)置值,取值('Key'的值是'Value');

這里需要向大家說(shuō)明一下addServer函數(shù)和connect函數(shù),addServer是將多個(gè)服務(wù)器放在連接池,而connect只是將連接某一臺(tái)服務(wù)器;如果在使用了addServer,再使用connect,這里就會(huì)只使用一臺(tái)服務(wù)器。

介紹了Memcached的使用后,下面向大家介紹如何編寫自己的PHP Memcached的客戶端

Memcached是一個(gè)服務(wù)器端程序,我們自然可以使用PHP中的套接字程序來(lái)連接,并進(jìn)行相應(yīng)的通訊,完成數(shù)據(jù)的存儲(chǔ)操作。要使用PHP和Memcached通訊,首先需要知道Memcached的通訊協(xié)議,相關(guān)的信息可以在Memcached的源碼的doc/protocol.txt中找到。

這里筆者使用get命令向大家展示一下這個(gè)過(guò)程

這個(gè)命令主要是從數(shù)據(jù)中提取數(shù)據(jù),輸入格式: get key\r\n

如果服務(wù)器沒(méi)有這個(gè)值,則返回: END\r\n

如果這個(gè)值存在,返回: VALUE key <標(biāo)記> <數(shù)據(jù)長(zhǎng)度> \r\n 數(shù)據(jù)塊\r\n

以下代碼是簡(jiǎn)單模擬的客戶端操作

 

  1. $fp = fsocketopen('172.10.10.10', 12121, $errorno$errstr, 1);  
  2. if(!$fp)  
  3.   echo "$errstr";  
  4. else 
  5. {  
  6.   $out = "get key \r\n";  
  7.   fwrite($out);  
  8.   while(!feof($fp))  
  9.     $str  . = fgets($fp);  
  10.   if(stripos($str'END') ===0)  
  11.     exit("NO value find")  
  12.   $arr = implode('\r\n'$str);  
  13.   echo $arr[1];  

 

簡(jiǎn)單解釋上面的代碼,使用fsocketopen打開服務(wù)器的socket通訊接口,然后向其發(fā)送get key命令, 然后獲取返回的數(shù)據(jù),并解析返回的數(shù)據(jù)。這里都沒(méi)有做異常的處理,在編程的時(shí)候要填上。

[[12830]]

延伸閱讀

Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提供動(dòng)態(tài)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。Memcached基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap。其守護(hù)進(jìn)程(daemon )是用C寫的,但是客戶端可以用任何語(yǔ)言來(lái)編寫,并通過(guò)memcached協(xié)議與守護(hù)進(jìn)程通信。但是它并不提供冗余(例如,復(fù)制其hashmap條目);當(dāng)某個(gè)服務(wù)器S停止運(yùn)行或崩潰了,所有存放在S上的鍵/值對(duì)都將丟失。

Memcached由Danga Interactive開發(fā),用于提升LiveJournal.com訪問(wèn)速度的。LJ每秒動(dòng)態(tài)頁(yè)面訪問(wèn)量幾千次,用戶700萬(wàn)。Memcached將數(shù)據(jù)庫(kù)負(fù)載大幅度降低,更好的分配資源,更快速訪問(wèn)。

原文標(biāo)題:使用php操作memcached

鏈接:http://www.cnblogs.com/kucongzhi/archive/2010/07/11/1775275.html

【編輯推薦】

  1. 專題:MySQL從入門到精通教程
  2. MySQL在太陽(yáng)下茁壯 在開源中強(qiáng)大
  3. 分布式緩存系統(tǒng)memcached簡(jiǎn)介與實(shí)踐
  4. 從memcached看MySQL和關(guān)系數(shù)據(jù)庫(kù)的未來(lái)
責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2009-11-25 13:21:30

PHP作為memcac

2011-09-27 10:05:57

DBeaver數(shù)據(jù)庫(kù)

2013-06-05 09:38:22

HeidiSQL

2011-06-28 09:09:57

JavaMemcached

2022-05-16 07:37:58

SQL 編輯器數(shù)據(jù)庫(kù)管理工具

2010-08-18 09:52:25

Memcache

2011-08-17 10:10:59

2020-03-19 08:00:00

客戶端KubernetesAPI

2010-03-19 13:05:11

Perst Lite

2012-10-11 17:02:02

IBMdw

2010-05-12 15:46:51

Subversion客

2014-01-07 14:39:26

Android開發(fā)RxJavaREST

2011-05-24 16:47:20

數(shù)據(jù)存儲(chǔ)

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2020-12-28 09:36:53

MySQL數(shù)據(jù)庫(kù)工具

2011-11-30 14:21:19

Java分布式緩存

2012-01-13 10:29:37

ibmdw

2020-04-23 09:32:33

zookeeperCP系統(tǒng)

2010-05-26 09:26:43

Cassandra
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)