溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php下Memcached的用法介紹

發(fā)布時(shí)間:2021-09-13 17:47:46 來源:億速云 閱讀:104 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“php下Memcached的用法介紹”,在日常操作中,相信很多人在php下Memcached的用法介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php下Memcached的用法介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

memcache 在什么情況下被使用,什么情況下不要使用?

你在何時(shí)應(yīng)該使用 memcache,又要在何時(shí)避免使用它?現(xiàn)在你已經(jīng)知道了,memcahced 是被設(shè)計(jì)為減輕數(shù)據(jù)庫教程端壓力的,但是你最好能制定一個(gè)良好的策略,來想辦法讓 memcached 來盡可能的緩存那些最影響性能的查詢,你可以試著為應(yīng)用中的所有查詢做一些執(zhí)行時(shí)間日志,可以幫助你來分析哪些內(nèi)容是要重點(diǎn)被緩存的.

現(xiàn)在假設(shè)你正在運(yùn)營一個(gè)電子商務(wù)網(wǎng)站,你可以在 memcached 中緩存產(chǎn)品的簡介、運(yùn)送信息,或者其它一些需要復(fù)雜查詢的數(shù)據(jù),等等,當(dāng)一個(gè)產(chǎn)品頁被加載的時(shí)候,上面提到的數(shù)據(jù)將會跳過數(shù)據(jù)庫查詢,直接從緩存中取得,緩存可以大大的改變你的網(wǎng)站整體性能表現(xiàn),你只需要記得在后臺更新產(chǎn)品的時(shí)候,把這些緩存一并更新就行了.

還有一些情況下,緩存數(shù)據(jù)并不是一個(gè)好主意,比如在一個(gè)數(shù)據(jù)被頻繁更新的時(shí)候,每一次數(shù)據(jù)的更新,我們都需要去同時(shí)更新緩存,緩存的命中率不高,會導(dǎo)致一些額外的性能犧牲,這種情況下,或許直接查數(shù)據(jù)庫會更好一些.

memcached 的安全性

如果你了解了 memcached 的工作流程,你可能已經(jīng)注意到了,在訪問緩存的過程中,沒有任何權(quán)限控制的相關(guān)流程,如果你的數(shù)據(jù)不是非常重要的,你大可不必?fù)?dān)心這方面的安全問題,如果你需要的話,以下幾點(diǎn)可以協(xié)助你更完全的使用它:

使用唯一的 key:因?yàn)樵?memcached 中的數(shù)據(jù)是以一個(gè)大的數(shù)組形式存在的,所以你應(yīng)該使用唯一的 key,訪問你的數(shù)據(jù)的唯一辦法就是通過你保存數(shù)據(jù)時(shí)的 key,除此之外再沒有其它可查詢的辦法.

保證你的 memcached 器安全:因?yàn)?memcached 本身并沒有身份驗(yàn)證機(jī)制,所以對 memcached 的服務(wù)器查詢,都應(yīng)該通過防火墻進(jìn)行,你可以在防火墻上設(shè)定規(guī)則,哪些服務(wù)器是允許被訪問的,哪些是不允許被訪問的.

加密你的數(shù)據(jù):你可以將數(shù)據(jù)和 key 通過加密的方式保存在 memcached 中,這需要花費(fèi)一些額外的 cpu 時(shí)間,但是為了你的數(shù)據(jù)安全,在情況允許的情況下,這個(gè)方法值得你去嘗試.

復(fù)制代碼 代碼如下:

<?php
class mycache
{
  private $cache;
  function  __construct()
  {
    $this->cache = new memcache();
    // you can replace localhost by memcached server ip addr and port no.
    $this->cache->connect('localhost', 10987);
  }
 
  function get_data($key)
  {
    $data = $this->cache->get($key);
    if($data != null)
      return $data;
    else
    {
      if($this->cache->getresultcode() == memcached::res_notfound)
      {
        //do the databse query here and fetch data
        $this->cache->set($key,$data_returned_from_database);
      }
      else
      {
        error_log('no data for key '.$key);
      }
    }
  }
}
$cache = mycache();
$cache->get_data('foo');
?>

到此,關(guān)于“php下Memcached的用法介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI