redis作為一個(gè)key-value數(shù)據(jù)庫在近年來非常火爆,尤其是在大數(shù)據(jù)和云計(jì)算發(fā)展迅速的今天。同樣redis也成為了開發(fā)人員必學(xué)必須使用的一個(gè)工具。同時(shí)redis在數(shù)據(jù)儲(chǔ)存時(shí)支持持久儲(chǔ)存和內(nèi)存儲(chǔ)存,既能夠保證數(shù)據(jù)存取的快速性也能夠保證數(shù)據(jù)的持久性。key-value數(shù)據(jù)庫發(fā)展的歷史非常長(zhǎng),在很早之前memcached作為一個(gè)在生產(chǎn)環(huán)境中使用的key-value類型的數(shù)據(jù)庫,經(jīng)常被當(dāng)做緩存來使用。但是redis是對(duì)memcached所存在的不足的彌補(bǔ)。下邊我來分享下redis在php中的安裝及使用,也是因?yàn)樽罱恼n程促使了我寫這樣一個(gè)文檔的想法。一、Redis在windows系統(tǒng)中的安裝
redis的官方安裝包并不支持windows系統(tǒng)的使用。但是有團(tuán)隊(duì)已經(jīng)開發(fā)了redis的windows適配的服務(wù)端和客戶端,一般情況下我們是把redis服務(wù)器單獨(dú)配置的,而且redis是支持網(wǎng)絡(luò)的,所以最好還是安裝在linux系統(tǒng)的專門redis服務(wù)器,如果考慮到主從同步redis提供的方法也很容易實(shí)現(xiàn)。
redis在windows下的安裝包的下載地址如下。
https://github.com/ServiceStack/redis-windows/tree/master/downloads
建議大家下載相對(duì)應(yīng)的版本,下載下來xxxxx.zip后需要解壓使用。我下載的是redis-latest.zip也就是redis3.0.5版本,對(duì)于版本的下載不要下載太新的版本,以免沒有對(duì)應(yīng)的dll擴(kuò)展。
下載后目錄的結(jié)構(gòu)如下:
在這些文件中只要注意redis-server.exe是redis在windows系統(tǒng)的服務(wù)端,如果要使用redis這個(gè)腳本必須點(diǎn)擊運(yùn)行而且不能關(guān)閉。如果出現(xiàn)以下的界面就表示運(yùn)行正常了。默認(rèn)情況host是127.0.0.1端口是6379,當(dāng)然這個(gè)可以自己來修改。
如果要在客戶端測(cè)試redis服務(wù)是否正常運(yùn)行了可以打開剛剛解壓的包中的redis-cli來測(cè)試
可以輸入以下內(nèi)容來測(cè)試redis的運(yùn)行效果。
SET username "weiyongqiang"GET username如果正常的輸出"weiyongqiang"就說明redis服務(wù)啟動(dòng)成功了,下邊就是在PHP中安裝redis擴(kuò)展了。
二、在PHP中安裝redis擴(kuò)展
在PHP中安裝擴(kuò)展模塊一般是添加dll文件來實(shí)現(xiàn)的。那我們首先要找到redis的dll擴(kuò)展。
在該地址下載php_redis.dll:http://windows.php.net/downloads/pecl/snaps/redis/
在下載之前需要看一下你所使用的PHP的這些信息,要和你要下載的擴(kuò)展對(duì)應(yīng)起來。
我的PHP版本是5.5.30而且我的PHP是nts(非線程安全的),是VC11,x86的所以我下載的擴(kuò)展為
下載解壓后需要將其中的php_redis.dll放置在PHP的ext目錄下。如果不知道怎么樣找ext目錄可以再PHPinfo的輸出中看loaded configurationfile所在的目錄在其中就可以看到ext
復(fù)制到ext后還需要打開php.ini來修改其中的擴(kuò)展選項(xiàng)。php.ini的位置就是我上邊所截圖的位置,打開php.ini后在任意位置添加
extension=php_redis.dll然后重啟服務(wù)器軟件,如果使用的apache就使用apache重啟的方法,如果是nginx就使用nginx重啟的方法。
重啟后再輸出下phpinfo()在其中查找是否有redis擴(kuò)展的信息
只有出現(xiàn)該選項(xiàng)才表示擴(kuò)展安裝成功。
三、在PHP中使用redis存取數(shù)據(jù)
3.1簡(jiǎn)單數(shù)據(jù)類型的讀寫
public function index(){$redisObj = new /Redis();$redisObj->connect('127.0.0.1',6379);$redisObj->set('name', '魏永強(qiáng)');$name = $redisObj->get('name');dump($name);}如果輸出為
string(9) "魏永強(qiáng)"就表示安裝成功了。注意:我的測(cè)試中使用了thinkphp框架,如果不使用框架要在輸出的位置把dump()替換成PRint_r($name)來輸出或者直接用echo也是可以的。
3.2哈希類型的讀寫
在redis中如果要讀寫數(shù)組等hash類型的數(shù)據(jù)就不能簡(jiǎn)單的使用set和get了。redis的API中為我們提供了hash類型數(shù)據(jù)的讀寫方法如下:
public function index(){$redisObj = new /Redis();$redisObj->connect('127.0.0.1',6379);$redisObj->hMset('userinfo', array('name'=>'魏永強(qiáng)','age'=>22));$info = $redisObj->hGetAll('userinfo');dump($info);}對(duì)于hash類型的操作方法分別是
public function hMset( $key, $hashKeys )讀取是方法為
public function hGetAll( $key )還有更多的關(guān)于PHP操作redis的方法請(qǐng)查看官方提供的手冊(cè)。當(dāng)然如果使用框架我們也可以使用框架為我們封裝好的redis的使用類來操作。比如ThinkPHP框架為我們已經(jīng)封裝好了redis驅(qū)動(dòng),這樣無論我們存取的數(shù)據(jù)類型是何種類型,在寫入時(shí)我們只要使用$obj->set(key,value);讀取時(shí)使用$obj->get(key);來讀取顯得非常方便。
| 
 
 | 
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注