linux下memcached的安裝

来源:http://www.cnblogs.com/chenpingzhao/archive/2016/06/08/5569573.html
-Advertisement-
Play Games

系統鏡像及環境要求: 1) 適用於windows系列版本及開發者的相關教程 請參考本文1.0開始安裝步驟 2) Centos 6系列及Aliyun Linux 6系列以上版本 請參考本文2.0開始安裝步驟 3) Centos 5系列及Aliyun Linux 5系列版本,請參考本文3.0開始安裝步驟 ...


系統鏡像及環境要求:

1) 適用於windows系列版本及開發者的相關教程  請參考本文1.0開始安裝步驟

2)  Centos 6系列及Aliyun Linux 6系列以上版本 請參考本文2.0開始安裝步驟

3)  Centos 5系列及Aliyun Linux 5系列版本,請參考本文3.0開始安裝步驟

4)  Ubuntu Debian等系列版本,請參考本文4.0安裝步驟

註意事項:如您已經有php memcache等環境,請註意教程中的一些提示,以免生產環境被覆蓋,導致業務不可用,在升級及再編譯環境前請做好環境備份!

1.0 安裝步驟

如果採用標準的php memcached擴展不能成功搭建,可以考慮換成手工拼包的形式來訪問OCS,連接方式請參考如下鏈接,示例代碼非常簡單,與php memcached的區別就是僅支持主流介面,需自己補充某些特定介面,安裝及使用方法如下:

https://github.com/ronnywang/PHPMemcacheSASL

2.0 安裝步驟

Centos及 Aliyun Linux 6系列版本

首先需要確認是否安裝了gcc-c++等組件可以使用如沒有請執行,

yum  install gcc+ gcc-c++

使用gcc –v查看版本是否為4.2(含)以上 【必須要安裝GCC  GCC要大於等於4.2】

1)    rpm –qa | grep php 查看系統中是否有PHP環境,如果沒有則安裝之;如果有PHP則不要安裝。建議使用php5.3【含】以上版本PHP5.2部分版本系列源代碼會有zend_parse_parameters_none函數會出錯,如需使用請參照php官方相關文檔【包含源碼編譯的PHP】

yum install php-devel,php-common,php-cli  

【如是源代碼編譯,請按照官方php編譯升級的辦法進行】

2) 安裝SASL相關環境

yum install cyrus-sasl-plain cyrus-sasl  cyrus-sasl-devel  cyrus-sasl-lib

【請先檢測下是否有已安裝了這些包,如有則不需要安裝】

3) 安裝源碼包libmemcached 【推薦版本libmemcached-1.0.16】

請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝

wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz 
tar zxvf libmemcached-1.0.16.tar.gz
cd libmemcached-1.0.16
./configure --prefix=/usr/local/libmemcached --enable-sasl
make
make install
cd ..

4) 安裝源碼包memcached 【推薦版本為memcached-2.2.0】

安裝MEMCACHED前需要確認是否有zlib-devel包沒有需要執行

yum install zlib-devel

請先檢測下是否有已安裝了memcached客戶端包【包含源碼包】如有則不需要安裝,但需要重新編譯增加-enable-memcached-sasl這個擴展

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize(如果系統中有兩套PHP環境,需絕對路徑調用該命令/usr/bin/phpize,該路徑為使用OCS的PHP環境路徑)
./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl(註意這個參數)
make
make install

最後修改php.ini文件(locate找該文件,如果系統中有兩套PHP環境,需找到使用OCS的PHP環境路徑,對應修改之),增加

extension=memcached.so
memcached.use_sasl = 1

依賴 :

Memcached 2.2.0擴展必須使用libmemcached 1.0.x的庫,低於1.0的庫不再能夠成功編譯。編譯 libmemcached時GCC要求在4.2以上。

使用該頁面最後的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址 埠 用戶名及密碼

3.0 安裝步驟

Centos及 Aliyun Linux 5系列版本 【64位版本】

首先需要確認是否安裝了gcc-c++等組件如沒有請執行

yum  install gcc+ gcc-c++

1)    rpm –qa | grep php 查看系統中是否有PHP環境,如果沒有則安裝之;如果有PHP則不要安裝!建議使用php5.3【含】以上版本PHP5.2部分版本系列源代碼會有zend_parse_parameters_none函數會出錯,如需使用請參照php官方相關文檔【包含源碼編譯的PHP】

yum install php53 php53-devel

2) 安裝SASL相關環境

yum install cyrus-sasl-plain cyrus-sasl  cyrus-sasl-devel  cyrus-sasl-lib

3) 安裝源碼包libmemcached  【推薦版本libmemcached1.0.2】

請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝

wget http://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
tar -zxvf libmemcached-1.0.16.tar.gzcd libmemcached-1.0.16
cd libmemcached-1.0.16
./configure --prefix=/usr/local/libmemcached --enable-sasl
make
make install
cd .. 

4)    安裝源碼包memcached 【推薦版本memcached2.0】

安裝MEMCACHED前需要確認是否有zlib-devel包沒有需要執行

yum install zlib-devel

請先檢測下是否有已安裝了memcached客戶端包【包含源碼包】如有則不需要安裝,但需要重新編譯增加-enable-memcached-sasl這個擴展

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar -zxvf memcached-2.0.0.tgz
cd memcached-2.0.0
phpize(如果系統中有兩套PHP環境,需絕對路徑調用該命令/usr/bin/phpize,該路徑為使用OCS的PHP環境路徑,請在memcached源碼目錄內執行phpize)
./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl(註意這個參數)
make
make instal

最後修改php.ini文件(locate找該文件,yum安裝的一般在/etc/php.ini 如果系統中有兩套PHP環境,需找到使用OCS的PHP環境路徑,對應修改之),增加

extension=memcached.so 
memcached.use_sasl = 1

執行php –m |grep memcached 如顯結果有 memcache 表示環境已支持memcache

使用該頁面最後的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址 埠 用戶名及密碼

4.0  安裝步驟 

1)    變更ubuntu源

方案一: vim /etc/apt/source.list

在最前面添加一下內容

deb http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse
apt-get update //更新一下列表

方案二: 通過wget http://oss.aliyuncs.com/aliyunecs/update_source.tgz 下載update_source的壓縮包 解壓後予執行許可權 chmod 777 文件名 ,然後執行該腳本進行自動變更源操作

2)   通過ape-get配置GCC,G++

首先需要使用dpkg –s安裝包名 【例如 dpkg –s gcc】確認是否安裝了gcc-c++等組件如沒有請執行

apt-get build-dep gcc
apt-get install build-essential
apt-get install pkg-config

3)    安裝php5, php5-dev

首先需要使用dpkg –s安裝包名 【例如 dpkg –s php】確認是否安裝了php等組件如沒有請執行

apt-get install php5 php5-dev  【同時會自動安裝php5-cli和php5-common】

4)    安裝配置sasl支持

首先需要使用dpkg –s安裝包名 【例如 dpkg –s libsasl2】確認是否安裝了libsasl2 cloog-ppl等組件如沒有請執行

apt-get install  libsasl2-dev cloog-ppl
cd /usr/local/src

5)    安裝指定版本的libmemcache

請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝

wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
tar -zxvf libmemcached-1.0.16.tar.gz
cd libmemcached-1.0.16
./configure --prefix=/usr/local/libmemcached
make
make install
cd ..

6)    安裝指定版本的memcached

請先檢測下是否有已安裝了memcached客戶端包【包含源碼包】如有則不需要安裝,但需要重新編譯增加-enable-memcached-sasl這個擴展

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize5
./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl
make
make install

7)    配置php支持memcached,然後測試

echo "extension=memcached.so" >>/etc/php5/conf.d/pdo.ini
echo "memcached.use_sasl = 1" >>/etc/php5/conf.d/pdo.ini

php -m |grep mem

memcached 【顯示出該組件代表安裝完成】

配置完畢

 

代碼示例如下

1、示例1:最基本的連接OCS及set/get操作:

$connect = new Memcached;  //聲明一個新的memcached鏈接
$connect->setOption(Memcached::OPT_COMPRESSION, false); //關閉壓縮功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二進位協議
$connect->addServer('aaaaaaaaaa.m.yyyyyyyyyyy.ocs.aliyuncs.com', 11211); //添加OCS實例地址及埠號
$connect->setSaslAuthData('aaaaaaaaaa, 'password'); //設置OCS帳號密碼進行鑒權,如已開啟免密碼功能,則無需此步驟
$connect->set("hello", "world");
echo 'hello: ',$connect->get("hello");
$connect->quit();

2、示例2:在OCS中緩存一個數組

$connect= new Memcached; //聲明一個新的memcached鏈接
$connect->setOption(Memcached::OPT_COMPRESSION, false); //關閉壓縮功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二進位協議
$connect->addServer('xxxxxxxx.m.yyyyyyyy.ocs.aliyuncs.com', 11211);//添加OCS實例地址及埠號
$connect->setSaslAuthData('xxxxxxxx', 'bbbbbbbb');//設置OCS帳號密碼進行鑒權,如已開啟免密碼功能,則無需此步驟。
$user = array(
    "name" => "ocs",
    "age" => 1,
    "sex" => "male"
); //聲明一組數組  
$expire = 60; //設置過期時間
test($connect->set('your_name',$user,$expire), true, 'Set cache failed');
if($connect->get('your_name')){
$result =$connect->get('your_name');
}else{
echo "Return code:", $connect->getResultCode();
echo "Retucn Message:", $connect->getResultMessage (); //如出現錯誤,解析出返回碼
$result=" ";
}
print_r($result);
$connect->quit();

function test($val, $expect, $msg)
{ 
    if($val!= $expect) throw new Exception($msg);
}

 3、示例3:OCS與MySQL資料庫結合使用的例子

$connect = new Memcached; //聲明一個新的memcached鏈接
$connect->setOption(Memcached::OPT_COMPRESSION, false);//關閉壓縮功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二進位協議
$connect->addServer('xxxxxx.m.yyyyyyyy.ocs.aliyuncs.com', 11211);//添加實例地址  埠號
$connect->setSaslAuthData('xxxxxx', 'my_passwd');//設置OCS帳號密碼進行鑒權,如已開啟免密碼功能,則無需此步驟
$user = array(
   "name" => "ocs",
   "age"  => 1,
   "sex"  => "male"
); //定義一組數組
 
if($connect->get('your_name'))
{
  $result =$connect->get('your_name');
  print_r($result);
  echo "Found in OCS, get data from OCS"; //如果獲取到數據,則列印此數據來源於OCS
  exit;  
}
else
{
  echo "Return code:", $connect->getResultCode();
  echo "Retucn Message:", $connect->getResultMessage ();//拋出code返回碼
  $db_host='zzzzzz.mysql.rds.aliyuncs.com'; //資料庫地址
  $db_name='my_db';         //database name
  $db_username='db_user';    //資料庫用戶名
  $db_password='db_passwd';//資料庫用戶密碼
  $connection=mysql_connect($db_host,$db_username,$db_password);
  if (!mysql_select_db($db_name, $connection))
  {
    echo 'Could not select database'; //資料庫連接不成功則拋出錯誤信息
    exit;
  }
  $sql = "SELECT name,age,sex FROM test1 WHERE name = 'ocs'";
  $result = mysql_query($sql, $connection);
  while ($row = mysql_fetch_assoc($result))
  {
    $user = array(
      "name" => $row["name"],
      "age"  => $row["age"],
      "sex"  => $row["sex"],
    );
    $expire = 5; //設置數據在緩存中的過期時間
    test($connect->set('your_name',$user,$expire), true, 'Set cache failed'); //寫入OCS緩存
  }
  mysql_free_result($result);
  mysql_close($connection);
}
print_r($connect->get('your_name')); //列印出  獲取到的數據
echo "Not Found in OCS,get data from MySQL"; //確認從資料庫獲取的數據
$connect->quit();
 
function test($val, $expect, $msg)
{
  if($val!= $expect) throw new Exception($msg);

}

來源:https://help.aliyun.com/knowledge_detail/5974954.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Mongodb在Mac中的安裝配置 @(Mongodb)[homebrew|LaunchDaemons|作者:victor] Mongodb 是基於分散式文件存儲的資料庫。由 C++ 語言編寫,旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。 MongoDB 是一個介於關係資料庫和非關係數據 ...
  • 本文轉自:http://blog.sina.com.cn/s/blog_66f845010100qelf.html 一, Transaction control 預設Transaction 由修改數據開始(獲得TX LOCK), 手工也可以用set transaction或DBMS_TRANSACT ...
  • 2016-06-0808:55:33 ---"17:10:13.236"time without time zone:時:分:秒.毫秒---"17:10:13.236+08"time with time zone:時:分:秒.毫秒+時區---"2016-06-02 17:18:25.281"time ...
  • 表空間是資料庫的邏輯組織形式,在一個資料庫中可以創建多個表空間。 表空間的主要作用是將不同用途的數據分離開來,以提高數據的安全性,並提高系統的性能。表空間在資料庫中起著非常重要的作用。 一方面,表空間在邏輯結構上由多個段組成,數據都存儲在表空間的段中,另一方面,表空間在物理結構上對應著多個數據文件, ...
  • 一、增:有4種方法 1.使用insert插入單行數據: 語法:insert [into] <表名> [列名] values <列值> insert into sheet1 values ('000000','000000','0','張三','000000','000000','000000','0 ...
  • 添加數據: 課程表: 添加數據: 成績表: 添加數據: 教師表: 添加數據: ...
  • 由於MySQL的版本不同,所以會有不同的安裝方式。在下以Linux系統下MySQL5.1.19版本為例,進行安裝,初學還望指正。 一、安裝編譯軟體(簡單的yum安裝) gcc gcc-c++ ncurses ncurses-devel cmake 二、修改hosts可以解析主機名 echo "127 ...
  • /* 本文是基於搬瓦工vps的centos-6-x86_64的Linux系統搭建。 需準備的工具:1、putty(用於連接Linux系統) 2、WinSCP(搬瓦工官方提供的ftp上傳下載工具) */ 1、使用WinSCP工具連接Linux進行文件管理 然後將jdk的tar.gz文件和tomcat的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...