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