1. 程式人生 > >s34 memcached緩存

s34 memcached緩存

也會 數據 blog html url 企業 only 分享 row

01-memcahe說明與應用場景

02-memcahe作為緩存服務器工作原理03-memcahe常用操作04-php支持memcache

1.緩存數據庫

緩存:將數據存儲在內存中,只有當磁盤勝任不了的時候,才會啟用緩存。缺點:斷電數據丟失(雙電),用緩存存儲數據的目的只是為了應付大並發的業務,至於數據存儲及可靠性不要找他了。
數據庫:mysql(關系型數據庫,能夠保證數據一致性,保證數據不丟失,但是因為功能太多,導致性能不高)====》數據倉庫緩存數據庫: memcache、redis(非關系型數據庫,性能極高,但是不保證數據完整)===》業務的數據提供者


2. 緩存數據庫使用場景


2.1 作為數據庫的緩存

當數據庫(mysql)承受不了大並發的請求時,可以將數據緩存到內存中(緩存數據庫),然後就可以解決。技術分享圖片


2.2 會話共享

場景:只要登錄了網站,以後訪問這個網站任何頁面都不要登錄了。
為什麽服務器知道你是誰?

3. 安裝使用memcache


3.1 Memcached簡介

Memcached是一款開源的、高性能的純內存緩存服務軟件。Mem是內存的意思,cache是緩存的意思,d是daemon的意思。
Memcache是項目的名字,誕生於2003年。Memcache服務分為客戶端和服務端兩部分,C/S架構。?客戶端軟件memcache-2.25.tar.gz?服務端軟件memcached-1.4.13.tar.gz

http://www.cnblogs.com/Csir/p/6711305.html

3.2 Memcached原理及優點

在啟動Memcached時,根據指定的內存大小參數,會被分配一個內存空間。當我們讀取數據庫的各類業務數據後,數據會同時放入Memcached緩存中,當下一次用戶請求同樣的數據,程序直接去Memcached取數據返回給用戶。優點:①對於用戶來講,用戶訪問網站更快了,體驗更好了。②對網站來說,數據庫壓力降低了。只有當內存沒有數據時才會去請求數據庫。第一次寫入的數據也會請求數據庫。一般公司沒有預熱,只有當用戶讀取過數據庫才會放到Memcached中。③提升了網站的並發訪問,減少服務器數量。


企業案例:當機房斷電,如何開啟web服務器、memcached緩存服務器、數據庫服務器的?開機順序:先開啟數據庫,再開啟緩存,然後預熱緩存數據庫,最後開啟web服務器。如果不預熱緩存數據庫,當開啟web後大量的訪問流入MySQL,造成的結果是MySQL啟動不了,一開就掛。
如何正確關閉網站集群服務器?從前端往後端依次關閉。如何正確開啟網站集群服務器?從後端依次往前端開啟,緩存服務器要預熱。


3.4 安裝memcached

yum -y install memcached

3.5 啟動memcached

[root@Memcached ~]# memcached -h
-p <num> 指定監聽端口 TCP port number to listen on (default: 11211)-l <addr> 綁定監聽的網卡 interface to listen on (default: INADDR_ANY, all addresses) -d run as a daemon # 後臺運行-u <username> assume identity of <username> (only when run as root) #指定用戶-m <num> 分配內存大小 max memory to use for items in megabytes (default: 64 MB)-c <num> max simultaneous connections (default: 1024) #並發訪問連接數-P <file> 指定pid文件存放路徑save PID in <file>, only used with -d option
/etc/init.d/memcached start

3.6 使用

向Memcached添加數據:鍵值對key1-->values1key2-->values2



# 寫入數據 [root@web01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211 STORED # 查詢數據 [root@web01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 VALUE key008 0 10 oldboy0987 END # 刪除數據 [root@web01 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211 DELETED [root@web01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 END技術分享圖片



3.7 服務端memcached監控


printf "stats\r\n"|nc 127.0.0.1 11211 ①監聽port或進程②可以模擬用戶先set後get,比對get內容是不是set的。crond nagios zabbix③監控命中百分比④監控響應時間及需要的狀態

4. PHP的memcache客戶端


4.1 安裝

tar xf memcache-2.2.5.tgzcd memcache-2.2.5/application/php/bin/phpize./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dirmakemake install
sed -i.ori ‘$a extension=memcache.so‘ /application/php/lib/php.inipkill php/application/php/sbin/php-fpm -t/application/php/sbin/php-fpm/application/php/bin/php -m|grep memcache



4.2 生成測試頁面


cat >>/application/nginx/html/blog/mc.php<<‘EOF‘<?php$memcache = new Memcache;$memcache->connect(‘172.16.1.41‘, 11211) or die ("Could not connect");$memcache->set(‘key20171017‘, ‘oldboy0326‘);$get_value = $memcache->get(‘key20171017‘);echo $get_value;?>EOF [root@web01 ~]# curl -H Host:blog.lewen.com 10.0.0.8/mc.php oldboy0326
[root@web01 conf]# curl 10.0.0.8/mc.phpoldboy0326
應用 :session共享需要運維+開發協同運維:準備環境開發:用環境
sed -i ‘s#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://172.16.1.41:11211"‘ /application/php/lib/php.ini
pkill php/application/php/sbin/php-fpm -t/application/php/sbin/php-fpm

總結:1.服務端、客戶端安裝,管理工具的使用2.session共享配置3.memcached 作為緩存工作過程

s34 memcached緩存