日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论

發布時間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

附:請淺談memcached的機制

答: ①基于C/S架構,協議比較簡單

    c/s架構,此時memcached為服務器端,我們可以使用如PHP,c++/c等程序連接memcached服務器。

    memcached的服務器客戶端通信并不使用XML等格式,而使用簡單的基于文本行的協議,因此通過telnet也能在memcached上保存、讀取數據。

   ②基于libevent事件來處理的

    libevent是一套垮平臺的事件處理接口的封裝,能夠處理兼容包括這些操作系統:

      windows/Linux/BSD/Solaris等操作系統的事件處理

    memcached使用libevent來進行網絡并發連接處理,能夠保持在很大的并發情況下,仍舊可以保持快速的響應能力!

  ③內置內存存儲方式

    為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中,由于數據僅存在于內存中,因此重啟memcached,重啟操作系統會導致全部的數據消失,另外內存容量達到指定值之后,就基于LRU(least recently used)算法自動刪除不使用的緩存。memcached本身是為緩存設計的服務器,因此并沒有過多考慮數據的永久性問題。

  ④基于客戶端分布式

    memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息,那么,怎樣進行分布式呢?這完全取決于客戶端的實現。

      memcached1        memcached2 ?        memcached3    

                  

                  分布式算法

                  客戶端程序庫

              

                  PHP應用程序  

?

    PHP應用程序要管理三個memcached服務器,客戶端進行操作,然后數據保存在經過memcached分布式算法的memcached服務器中一個上。

?

memcached細節討論:

   1、生命周期

      ①Apache關閉后

      ②Apache沒關閉,但是緩存時間到

      ③memcached服務關閉

   2、memcached數據存在什么地方

      存放于memcached所在機器的這個內存中

   3、memcached最佳實踐

      ①將從數據庫查詢的數據存放在memcached中

        <?php

          $user_id = (int)$_GET['user_id'];

          //判斷memcached中是否存在user_id

          $mc = new Memcache();

          if ($user = $mc -> get('user_id')) {

            //找到,直接取出值

            dump($user); 

          } else {

            //未找到查詢數據庫

            ob_start();

            $user = //查詢數據庫操作,得到數據

            //緩存起來,壓縮,保存24小時

            $mc -> set($user_id, $user, MEMCACHED_COMPRESSED, 3600*24);

            //分配到模板中

            $this->assign('user', $user);

            ob_end_flush();

            }

?

      ②將session數據存放在memcached中

         默認情況下,session數據是存在服務器中的文件上的。

         完成以下配置,直接搞定:

        ①保證memcache擴展開啟,memcached運行

        ②設置php.ini中session.save_handler = memcache

        ③設置php.ini中session.save_path = tcp://localhost:11211

        ④也可以通過php函數ini_set()函數進行頁面中的設置。

        小結:

          我們只需要在php.ini中進行以上配置,那么session將不會按照文件的格式存儲在服務器上,而是存儲在memcached服務器內存中。調用的時           候依然按照原來session文件存儲格式方式調用即可:  即, $user_id = $_SESSION['user_id'];

     ③memcached的數據是無用戶狀態的,不會和某個用戶綁定。

     ④memcached訪問安全性

      windows下

        設置防火墻:打開防火墻并設置例外

?

      Linux下

        iptables -a input -p 協議 -s 可以訪問ip -dport 端口 -j ACCEPT

   4、

    什么樣的數據適合放Memcached中?

      變化頻繁,據有不穩定性的數據,不需要實時入庫(比如用戶在線狀態,在線人數)

      門戶網站的新聞等,覺得頁面靜態化仍不能滿足要求

    什么樣的數據不適合放Memcached中?

      銀行股票證券系統時時變化

      數據量過大,比如優酷網的視頻

    總結:

      如果是一個小網站,PV值不大,就不考慮使用memcached

      變化頻繁,查詢頻繁,但是不一定寫入數據庫(適合memcached)(用戶在線狀態,用戶在線人數)

      變化頻繁一變化就要入庫的,比如股票,金融(不適合memcached)

      變化不頻繁,查詢很頻繁,不管入不入庫都比較適合memcached(新浪的新聞頻道)

      

      

轉載于:https://www.cnblogs.com/Zell-Dinch/p/3901590.html

總結

以上是生活随笔為你收集整理的memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。