1. 程式人生 > >memcache安裝與使用教程(已經很詳細了)

memcache安裝與使用教程(已經很詳細了)

一、使用場景

1、非持久化儲存:對資料儲存要求不高 2、分散式儲存:不適合單機使用 3、Key/Value儲存:格式簡單,不支援List、Array資料格式

二、PHP中使用Memcache

1、系統類:addServer、addServers、getStats、getVersion 2、資料類:get、set、delete、flush、replace、increment、get 3、進階類:setMulti、deleteMulti、getMulti、getResultCode、getResultMessage

三、PHP中使用memcache

四、windows下memcache的安裝

1、memcache的安裝:

一般情況下會首先在在phpstudy的目錄下建一個memcache的資料夾。然後在將memcache下載到此資料夾下。 步驟:1.1、用doc命令進入memcache的根目錄。 1.2、memcache的安裝: memcached.exe -d install 1.3、memcache的解除安裝: memcached.exe -d uninstall 1.4、啟動memcache: memcached.exe -d start 1.5、檢視memcache啟動成功沒有:點選右鍵 計算機/管理/服務/memcache Server

2、使用telnet伺服器操作memcache:

2.1、開啟telnet:控制面板/程式和功能/開啟或關閉windows功能/勾選telnet伺服器、telnet伺服器客戶端 2.2、連線memcache伺服器:telnet 127.0.0.1 11211 、ctrl+]。 2.3、使用telnet進行memcache記憶體伺服器資料的增刪改查: 增 add 舉例:add name 0 0 4 1234 查 get 改 set 刪 delete

五、使用PHP操作memcache

1、下載memcache.dll擴充套件:

http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/ 下載完對應版本的php_memcache.dll 放在對應的ext資料夾中

2、將擴充套件寫入php.ini中:

extension=php_memcache.dll

3、寫memcache.php:

<?php
$mem=memcache_connect('localhost', 11211);
var_dump($mem);

六、ab壓力測試工具:

2、ab 的用法是:ab [options] [http://]hostname[:port]/path—— 例如:ab -n 5000 -c 200http://localhost/index.php 解析:上例表示總共訪問http://localhost/index.php這個指令碼5000次,200併發同時執行。 ab常用引數的介紹:-n :總共的請求執行數,預設是1; -c: 併發數,預設是1; -t:測試所進行的總時間,秒為單位,預設50000s -p:POST時的資料檔案 -w: 以HTML表的格式輸出結果

七、PHP相關函式的使用:

1、程式碼的使用:

2、結果:

3、程式碼分析:

初始化一個Memcache的物件: $mem = new Memcache; 連線到我們的Memcache伺服器端,第一個引數是伺服器的IP地址,也可以是主機名,第二個引數是Memcache的開放的埠: $mem->connect("localhost"11211); 儲存一個數據到Memcache伺服器上,第一個引數是資料的key,用來定位一個數據,第二個引數是需要儲存的資料內容,這裡是一個字串,第三個引數是一個標記,一般設定為0或者MEMCACHE_COMPRESSED就行了,第四個引數是資料的有效期,就是說資料在這個時間內是有效的,如果過去這個時間,那麼會被Memcache伺服器端清除掉這個資料,單位是秒,如果設定為0,則是永遠有效,我們這裡設定了60,就是一分鐘有效時間: $mem->set('key1', 'This is first value'060); 從Memcache伺服器端獲取一條資料,它只有一個引數,就是需要獲取資料的key,我們這裡是上一步設定的key1,現在獲取這個資料後輸出輸出: $val = $mem->get('key1'); echo "Get key1 value: " . $val; 現在是使用replace方法來替換掉上面key1的值,replace方法的引數跟set是一樣的,不過第一個引數key1是必須是要替換資料內容的key,最後輸出了: $mem->replace('key1''This is replace value'060); $val = $mem->get('key1'); echo "Get key1 value: " . $val; 同樣的,Memcache也是可以儲存陣列的,下面是在Memcache上面儲存了一個數組,然後獲取回來並輸出 $arr = array('aaa','bbb','ccc''ddd'); $mem->set('key2'$arr060); $val2 = $mem->get('key2'); print_r($val2); 現在刪除一個數據,使用delte介面,引數就是一個key,然後就能夠把Memcache伺服器這個key的資料刪除,最後輸出的時候沒有結果 $mem->delete('key1'); $val = $mem->get('key1'); echo "Get key1 value: " . $val . "<br>"; 最後我們把所有的儲存在Memcache伺服器上的資料都清除,會發現資料都沒有了,最後輸出key2的資料為空,最後關閉連線 $mem->flush(); $val2 = $mem->get('key2'); echo "Get key2 value: "; print_r($val2); echo "<br>";

八、Memcache的使用

使用Memcache的網站一般流量都是比較大的,為了緩解資料庫的壓力,讓Memcache作為一個快取區域,把部分資訊儲存在記憶體中,在前端能夠迅速的進行存取。那麼一般的焦點就是集中在如何分擔資料庫壓力和進行分散式,畢竟單臺Memcache的記憶體容量的有限的。我這裡簡單提出我的個人看法,未經實踐,權當參考。 分散式應用 Memcache本來支援分散式,我們客戶端稍加改造,更好的支援。我們的key可以適當進行有規律的封裝,比如以user為主的網站來說,每個使用者都有User ID,那麼可以按照固定的ID來進行提取和存取,比如1開頭的使用者儲存在第一臺Memcache伺服器上,以2開頭的使用者的資料儲存在第二胎Mecache伺服器上,存取資料都先按照User ID來進行相應的轉換和存取。 但是這個有缺點,就是需要對User ID進行判斷,如果業務不一致,或者其他型別的應用,可能不是那麼合適,那麼可以根據自己的實際業務來進行考慮,或者去想更合適的方法。 減少資料庫壓力 這個算是比較重要的,所有的資料基本上都是儲存在資料庫當中的,每次頻繁的存取資料庫,導致資料庫效能極具下降,無法同時服務更多的使用者,比如MySQL,特別頻繁的鎖表,那麼讓Memcache來分擔資料庫的壓力吧。我們需要一種改動比較小,並且能夠不會大規模改變前端的方式來進行改變目前的架構。 我考慮的一種簡單方法: 後端的資料庫操作模組,把所有的Select操作提取出來(update/delete/insert不管),然後把對應的SQL進行相應的hash演算法計算得出一個hash資料key(比如MD5或者SHA),然後把這個key去Memcache中查詢資料,如果這個資料不存在,說明還沒寫入到快取中,那麼從資料庫把資料提取出來,一個是陣列類格式,然後把資料在set到Memcache中,key就是這個SQL的hash值,然後相應的設定一個失效時間,比如一個小時,那麼一個小時中的資料都是從快取中提取的,有效減少資料庫的壓力。缺點是資料不實時,當資料做了修改以後,無法實時到前端顯示,並且還有可能對記憶體佔用比較大,畢竟每次select出來的資料數量可能比較巨大,這個是需要考慮的因素。

九、Memcache的安全

我們上面的Memcache伺服器端都是直接通過客戶端連線後直接操作,沒有任何的驗證過程,這樣如果伺服器是直接暴露在網際網路上的話是比較危險,輕則資料洩露被其他無關人員檢視,重則伺服器被入侵,因為Mecache是以root許可權執行的,況且裡面可能存在一些我們未知的bug或者是緩衝區溢位的情況,這些都是我們未知的,所以危險性是可以預見的。為了安全起見,我做兩點建議,能夠稍微的防止黑客的入侵或者資料的洩露。 內網訪問 最好把兩臺伺服器之間的訪問是內網形態的,一般是Web伺服器跟Memcache伺服器之間。普遍的伺服器都是有兩塊網絡卡,一塊指向網際網路,一塊指向內網,那麼就讓Web伺服器通過內網的網絡卡來訪問Memcache伺服器,我們Memcache的伺服器上啟動的時候就監聽內網的IP地址和埠,內網間的訪問能夠有效阻止其他非法的訪問。 # memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid Memcache伺服器端設定監聽通過內網的192.168.0.200的ip的11211埠,佔用1024MB記憶體,並且允許最大1024個併發連線 設定防火牆 防火牆是簡單有效的方式,如果卻是兩臺伺服器都是掛在網的,並且需要通過外網IP來訪問Memcache的話,那麼可以考慮使用防火牆或者代理程式來過濾非法訪問。 一般我們在Linux下可以使用iptables或者FreeBSD下的ipfw來指定一些規則防止一些非法的訪問,比如我們可以設定只允許我們的Web伺服器來訪問我們Memcache伺服器,同時阻止其他的訪問。 # iptables -F # iptables -P INPUT DROP # iptables -A INPUT -p tcp -s 192.168.0.2 --dport 11211 -j ACCEPT # iptables -A INPUT -p udp -s 192.168.0.2 --dport 11211 -j ACCEPT 上面的iptables規則就是隻允許192.168.0.2這臺Web伺服器對Memcache伺服器的訪問,能夠有效的阻止一些非法訪問,相應的也可以增加一些其他的規則來加強安全性,這個可以根據自己的需要來做。

相關推薦

memcache安裝使用教程已經詳細

一、使用場景 1、非持久化儲存:對資料儲存要求不高 2、分散式儲存:不適合單機使用 3、Key/Value儲存:格式簡單,不支援List、Array資料格式 二、PHP中使用Memcache 1、系統類:addServer、addServers、getStats、getV

PHP檔案的上傳下載總結已經詳細

一、一個簡單的圖片上傳例項 1.1、例項程式碼部分 1.2、測試結果 1.3、move_uploaded_file($tmp_name,$destination)函式的使用:將伺服器上的臨時檔案移動到指定的資料夾下 copy($tmp_name,$destination)函式的使用:將伺服器上的臨

2017.7.1 mysql安裝啟動已驗證可以使用

界面 all avi 配置 install 服務 毫無 壓力 cnblogs 之前一直用解壓版安裝,啟動mysql服務的時候總是失敗,這次用mysql installer安裝一遍,終於成功啟動。 1.下載mysql installer 下載的32位的,在64位系統運行也

Supervisor 安裝配置 Linux 程序管理工具

Supervisor 安裝與配置 (Linux 程序管理工具) Supervisor 安裝與配置 Linux 程序管理工具 一安裝 Python 包管理工具easy_install 二安裝 Supervisor

Python的安裝應用大資料實驗一

  實驗名稱 Python的安裝與應用 專  業 軟體工程 姓    名      學 &

windows下安裝curl教程遇到坑記錄一下

前言:最近要在本機安裝curl,網上查了很多資料還是沒有成功,最後靠大神解決了,原來有個關鍵步驟沒做,在這裡記錄一下。 1.去官網下載curl的安裝包https://curl.haxx.se/download.html 根據自己電腦情況下載32位或者64位的。

Ctags 的安裝使用使用命令詳解

這兩天看到網上有將vim 改造成功能強大的IDE的blog,突然心血來潮,親身經歷了一下。 網友的帖子都不錯,我這裡只是將各種外掛分開羅列,然後加上一些使用技巧。 希望本文對你有所幫助! 『外掛介紹』 Ctags工具是用來遍歷原始碼檔案生成tags檔案,這些tags檔案能被編輯器或其它工具用來快速查詢定位原始

pytorch和torchnet的安裝測試Ubuntu16.04+cuda9.0

本人的ubutu版本為16.04,cuda9.0。一.啟動ubuntu系統出現黑畫面 1.開機,進入grub畫面。選擇第一項”ubuntu”,按”e”,進入編輯模式。將”quite splash”, 修改為”quite splash nomodeset”。 2.按 ”F10

最新Win7 +Python3.6.0(Anaconda3-4.3.21)+Tensorflow的安裝配置不用切換python3.5

一、首先進入Anaconda官網下載  https://www.anaconda.com/download/各位根據自己電腦配置下載對應的版本,我這裡下載的是Python3.6version 64bit的版本 下載並安裝完成後,開啟 CMD, 輸入 'conda --v

CentOS 安裝oracle資料庫終於搞通~~

要在CentOS6.5上,安裝oracle 11 r2,網上搜尋了好久,還是各種不通,搞了一天終於弄好了,這裡記錄一下; 首先宣告:安裝的機器記憶體至少要2G,因為在後面安裝的時候,會有個preckeck,記憶體不能小於1G,我都是到最後才發現不行,崩潰。。。

SQL server分頁的四種方法全面

目錄: 文章目錄   這篇部落格講的是SQL server的分頁方法,用的SQL server 2012版本。下面都用pageIndex表示頁數,pageSize表示一頁包含的記錄。並且下面涉及到具體例子的,設定查詢第2頁,每頁含10條記錄。   首先說一下SQ

【ROS機器人作業系統初探索01】安裝初級教程主要是貼上連結,沒有在此描述詳細步驟

由於畢設選擇了一個與機器人相關的題目,所以開始了漫長的盲目的摸索。至今為止還屬於畢設0突破狀態,因為時間不多了,所以想要寫寫部落格督促一下自己學習,記錄一下學習進展。第一次接觸很多原理的東西都不懂,只知道跟著官網的教程敲入程式碼QAQ感覺長路漫漫,畢業無望先寫一下學習的目標:

史上最詳細nodejs版本管理器nvm的安裝使用附註意事項和優化方案

技術 註意 nod core 遇到 target 快速 方式 get 使用場景 在Node版本快速更新叠代的今天,新老項目使用的node版本號可能已經不相同了,node版本更新越來越快,項目越做越多,node切換版本號的需求越來越迫切,傳統卸載一個版本在安裝另一個版本的方

Visual Studio 2017 安裝使用教程詳細

系統設置 -s 分享圖片 代碼 ++ 官網下載 studio 題解 微軟官網 Visual Studio 2017 安裝使用教程(詳細) 本人曾因無法使用vs編寫C語言程序痛苦一個月之久,實乃慚愧,後發現不少同學也同樣存在著相同問題,其原因歸結於網上的各種教程

war包的安裝部署以兩個Tomcat為例,詳細

1   首先匯入資料庫(資料庫中要有該war包的資料庫) 2   執行 jzsales-manager-web.war 在8080埠上 2.1  將 jzsales-manager-web.war複製到Tomcat下的webapps資料

將Maven工程匯出war包匯出可執行檔案 war包的安裝部署以兩個Tomcat為例,詳細請到:

1  開啟war工程的pom.xml,將如下內容複製到配置Tomcat的程式碼中                 &l

redis linux上的安裝配置詳細圖解

1、下載 http://redis.io/download 1 2、解壓至任一目錄 tar xzf redis-2.8.17.tar.gz 1 3、編譯並安裝 cd redis-2.8.17 make cd src make install PREF

Xmind 8 pro 安裝破解圖文教程

Xmind 8 pro 安裝與破解(圖文教程) 安裝包和工具下載地址: 連結:https://pan.baidu.com/s/1EqPn4TBWqqkjEXp2sJyv9w 密碼:5cvf 安裝步驟: 1.先安裝安裝包,一路預設安裝就好,修改安裝路徑也可以。 2.開

人體姿態估計Alphapose配置安裝教程GPU,超詳細,親測有效!

首先簡單介紹一下Alposepose 該模型提出的論文:《RMPE: Regional Multi-Person Pose Estimation》ICCV 2017,是由上海交通大學提出的,目前在多人自討估計的效果最好。 文章的寫作背景是單人姿態估計的方法不能用在多人

Maven安裝使用教程詳細附圖

Maven的簡介 什麼是maven  是apache下的一個開源專案,是純java開發,並且只是用來管理java專案的 Maven好處 普通的傳統專案 Maven專案 分析:maven專案為什麼這麼小?沒有jar。 需要jar嗎?肯定需要。沒有