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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php操作redis_PHP操作redis的两种方式

發(fā)布時間:2025/4/16 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php操作redis_PHP操作redis的两种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隨著redis使用越來越廣泛,各種應(yīng)用系統(tǒng)幾乎都會嵌入redis。當(dāng)然,PHP也不例外。在我接觸到的項(xiàng)目中,主要是使用redis作為緩存服務(wù)器。但是對于PHP來說,它本身并不支持redis。所以說這里我們需要自己做一些事情,是PHP可以連接redis并操作它。

這里主要有兩種方式:一種是通過第三方擴(kuò)展,另一種是自己使用socket來封裝redis。

通過第三方擴(kuò)展

目前,對于php操作redis的第三方擴(kuò)展有很多,我們在這就拿phpredis為例來介紹。

當(dāng)然,按照常規(guī)的PHP模塊來說,在安裝phpredis擴(kuò)展之前,如果我們像其他的模塊一樣來實(shí)例化redis操作對象的話,系統(tǒng)會報找不到redis類的錯誤

$obj = new redis();

var_dump($obj);

?>

錯誤如下

Fatal_error: class redis not found……

從上面我們也可以看出php默認(rèn)是不支持redis操作的。

那么我們接下來就需要自己動手了。

在linux系統(tǒng)下擴(kuò)展

首先我們需要下載,當(dāng)然在linux上下載第三方應(yīng)用還是比較容易的。phpredis的源代碼托管在github上,下載地址:https://github.com/phpredis/phpredis.git

# git clone https://github.com/phpredis/phpredis.git

然后進(jìn)入該目錄

#cd phpredis

對PHP擴(kuò)展第三方應(yīng)用,需要借助phpize這個工具,具體步驟如下

# /usr/local/php/bin/phpize? //生成編譯需要的文件

# ./configure

這個過程可能會出現(xiàn)如下錯誤

configure: error: Cannot find php-config. Please use --with-php-config=PATH

出現(xiàn)這個錯誤的時候,我們需要按照它的提示 使用 –with-php-config=PATH重新操作

#./configure –with-php-config=/usr/local/php/bin/php-config

//成功

# make && make install

Installing shared extensions:???? /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/?? //編譯安裝成功后的結(jié)果

最后的結(jié)果告訴我們,phpredis已經(jīng)編譯成功。在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/這個目錄下已經(jīng)生成了redis.so庫。

然后我們編輯php.ini配置文件,將redis.so類庫加入到php.ini擴(kuò)展中

extensions_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

extension=redis.so

然后我們重啟服務(wù),這時phpredis已經(jīng)擴(kuò)展成功了。我們可以使用phpinfo()函數(shù)檢測當(dāng)前PHP的環(huán)境信息。

發(fā)現(xiàn)當(dāng)前php已經(jīng)支持redis操作了。

其實(shí)在linux系統(tǒng)下面對PHP進(jìn)行第三方的擴(kuò)展很簡單。下面我們來看一下如何在windows下進(jìn)行擴(kuò)展。

在windows系統(tǒng)下擴(kuò)展

1. 安裝visual studio 2008

2. 下載PHP源碼

3. 解壓到C:\php\php5

5. 打開 cmd 依次執(zhí)行下面的命令

>cd C:\php\php-5.4.9\ext

>git clone https://github.com/nicolasff/phpredis.git

>cd ..

>buildconf.js

>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv" /x86 /xp /release

>path "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin";%PATH%

>bin\phpsdk_setvars.bat

>"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

>configure.js --disable-all --enable-cli --enable-redis --enable-redis-session (if building the nts version, also add --disable-zts)

>nmake php_redis.dll

>fix any compilation errors

最后將生成的php_redis.dll 拷貝到 php安裝目錄\ext 目錄下面。然后編輯php.ini,添加如下內(nèi)容

extension=php_redis.dll

最后重啟服務(wù)即可完成phpredis在windows下的擴(kuò)展。

使用原生php封裝phpredis

上面我們介紹了使用第三方的擴(kuò)展使php支持redis操作。除此之外我們還可以自己通過redis的協(xié)議使用php來封裝phpredis。

這里我先封裝一個類,簡單的實(shí)現(xiàn)get 命令。代碼如下

class Redis{

private $handle;

private $host;

private $port;

private $slient_fail;

private $timeout;

private $connect_timeout = 3;

public function __construct($host,$port,$slient_fail = false,$timeout = 60){

if($host && $port){

$this->connect($host,$port,$slient_fail,$timeout);

}

}

private function connect($host = '127.0.0.1',$port = 6379,$slient_fail = false,$timeout = 60){

$this->host = $host;

$this->port = $port;

$this->slient_fail = $slient_fail;

$this->timeout = $timeout;

$this->handle = fsockopen($host,$port,$errno,$errstr,$this->connect_timeout);

}

public function get(){

$nl = "\r\n";

$cmd = '*2'.$nl.'$3'.$nl.'get'.$nl.'$5'.$nl.'mykey'.$nl;

fwrite($this->handle, $cmd);

$res = fgetc($this->handle);

$res = trim(fgets($this->handle));

$response = fread($this->handle,$res);

fgets($this->handle);

echo $response;

}

}

$obj = new Redis('192.168.144.133',6379);

$obj->get();

在上面代碼中,有一個需要注意的地方。就是在成員函數(shù)get()中的變量$cmd的內(nèi)容需要和大家簡單介紹一下。

$cmd = '*2'.$nl.'$3'.$nl.'get'.$nl.'$5'.$nl.'mykey'.$nl;

其中*后面的數(shù)字表示該命令的參數(shù)個數(shù)。因?yàn)橛袃蓚€參數(shù) get 和 mykey,所以*后面是2。$后面的數(shù)字表示的是參數(shù)的長度。get長度是3,mykey長度是5。所以前面分別是 $3和$5。

希望本文對大家有所幫助。

總結(jié)

以上是生活随笔為你收集整理的php操作redis_PHP操作redis的两种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。