幫别的項目組解決問題時,發現他們用了memcache。雖然我們目前沒有用到,但感覺了解下還是必要的,是以親自動手,從最初的安裝配置入手,這裡着重記錄下安裝過程中出現的錯誤及解決方案,也給大家提供參考。
網上對于Memcache的介紹很多,這裡我摘錄了一個比較直白的介紹:
Memcache是自由、源碼開放、高性能、分布式的分布式記憶體對象緩存系統,用于動态Web應用以減輕資料庫的負載。它通過在記憶體中緩存資料和對象來減少讀取資料庫的次數,進而提高了網站通路的速度。
1、安裝memcache服務端
安裝memcached需要先安裝libevent,安裝指令如下:
Debian/Ubuntu: apt-get install libevent-dev
Redhat/Centos: yum install libevent-devel
檢視安裝是否成功libevent
安裝Memcached
[root@localhost installPackage]# tar -zxvf memcached-1.4.34.tar.gz
[root@localhost installPackage]# cd memcached-1.4.34
[root@localhost memcached-.]# ./configure && make && make test && sudo make install
檢查memcached是否安裝成功:
安裝過程中可能遇到的錯誤:
(1)沒有安裝gcc編譯器
解決方法:
[[email protected] memcached-1.4.34]# yum install gcc make (如果有沒有安裝gcc編譯器,make,先安裝)
(2)如果make test時出現下面Error,沒有安裝perl
解決方法:
[[email protected] memcached-1.4.34]# yum install perl-Test*
(3)檢測到時鐘錯誤。您的建立可能是不完整的
解決方法:
修改目前時間:
[root@localhost ~]# date -s '2017/2/24 13:47:00'
Fri Feb :: CST
将目前系統時間寫入CMOS中去
[root@localhost ~]# clock -w
如下圖:
2、啟動Memcache服務
執行指令:
指令詳解:
memcached指令參數解釋:
-p 監聽的端口
-l 連接配接的IP位址, 預設是本機
-d start 啟動memcached 服務
-d restart 重起memcached 服務
-d stop|shutdown 關閉正在運作的memcached 服務
-d install 安裝memcached 服務
-d uninstall 解除安裝memcached 服務
-u 以的身份運作 (僅在以root運作的時候有效)
-m 最大記憶體使用,機關MB。預設64MB
-M 記憶體耗盡時傳回錯誤,而不是删除項
-c 最大同時連接配接數,預設是1024
-f 塊大小增長因子,預設是1.25
-n 最小配置設定空間,key+value+flags預設是48
-h 顯示幫助
-P 是儲存Memcache的pid檔案,這裡儲存在 /tmp/memcached.pid
3、測試啟動是否成功
用telnet測試是否可以連接配接到memcache
成功會顯示如下資訊:
本次測試中出現如下資訊:
出現上面的圖檔所示錯誤,原因之一是防火牆沒有添加規則。
1) 關閉伺服器端防火牆
2) 添加防火牆規則
[root@localhost memcached-.]# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT //增加規則,還未增加到/etc/sysconfig/iptables檔案裡
[root@localhost memcached-.]# service iptables save 将規則儲存在/etc/sysconfig/iptables檔案裡
[root@localhost memcached-.]# service iptables restart
如果還是報同樣的錯誤:執行指令
[root@localhost memcached-.]# iptables –F //清空規則緩沖區
一定要注意執行順序。
現在伺服器端Memcache已安裝好,我們可以執行指令看下效果:
回車後系統自動儲存,并傳回正常值STORED
存入指令格式為
\r\n
注意在設定bytes位元組後,存入的值的長度一定要與之比對,否則無法儲存成功,像name字段為4位元組,是以存入的hell長度為4。
Memcache使用注意事項
- Key的最大長度是250個字元
- Key不能有空格和控制字元
- 過期時間最長為30天,如果時間大于30天,值會設定為不緩存
- 最大能存儲的單個item不能大于1MB,可考慮在用戶端拆分到多個key中