通過前面幾篇blog,我們應該對redis有個大致的認識,這裏再講解下,php怎麼連接redis服務器進行數據讀寫?
1、安裝php擴展
a)安裝php擴展phpredis:
[root@xsf002 tool]# git clone https://github.com/nicolasff/phpredis.git phpredis
[root@xsf002 tool]# cd phpredis/
[root@xsf002 phpredis]# /usr/local/php/bin/phpize #假設 php目錄:/usr/local/php
[root@xsf002 phpredis]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@xsf002 phpredis]# make
[root@xsf002 phpredis]# make install
如果順利,將得到類似如下提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
php擴展文件目錄下,將有個redis.so文件。
b)加載redis.so
在php.ini 文件中,添加配置:
[redis]
extension=redis.so
重啓web服務器,echo phpinfo() ,將看到大致如下顯示:
2、通過擴展訪問redis服務器
php如何使用redis服務器存取數據?無非是經過phpredis擴展模塊,通過如下幾個步驟:
1、實例化redis類 【new redis()】
2、調用redis類方法,連接redis服務器 【connect,pconnect】
3、設置連接選項【setOption】
4、存/取數據
5、關閉連接 【close】
如果使用默認選項,步驟3不需要。請參看下面的代碼示例:
<?php
$redis = new Redis(); #實例化redis類
$redis->connect('127.0.0.1'); #連接服務器
$redis->set('key', 'hello '); #調用方法,設置string類型值
$redis->append('key', 'world'); #修改string類型值
echo $redis->get('key'); #獲取redis key的值,並輸出顯示
echo $redis->type('key'); #獲取key 的數據類型
echo $redis->echo('will close...');# 輸出字符串
$redis->close(); #關閉連接
通過上面的代碼,我們基本完成一個簡單redis的存取操作。下面羅列一些Redis類的一些屬性及方法
a)連接redis server:
- connect :連接server
- pconnect :長連接
- auth :權限驗證
- select :選擇DB
- close : 關閉連接
- setOption : 設置 client 選項
- getOption : 獲取client選項
- ping : ping redis server
- echo : 輸出 字符串
注意,如果頻繁操作redis,不停地connect 和close會很耗性能的,這個時候,建議用pconnect 建立個長連接
b)字符串讀寫函數
- append :在值的後面追加值
- decr :遞減一個key的值
- incr :遞增一個key的值
- get :獲取一個值
- set :設置一個值
- getSet :設置值,並返回老值
- mGet :批量獲取值
- mSet :批量設置值
- strlen :獲取值長度
注意:如果能用批量操作儘量用批量,減少頻繁連接redis數據庫性能
c)hash讀寫函數
- hDel :刪除一個多個域
- hExists :判斷一個hash域是否存在
- hGet :獲取hash域的值
- hGetAll :獲取所有域值
- hIncrBy :自增長一個hash int域的值
- hKeys :獲取hash 所有域
- hLen :獲取域個數
- hMGet :批量獲取域的值
- hMSet :批量設置域的值
- hSet :設置域的值
- hVals:得到所有域的值
d)list讀寫函數
- lInsert:插入元素
- lLen:list長度
- lPop:移除並獲取第一個顏色
- lPush:插入一個元素
- lRem:移除元素
- lSet:設置元素值
e)set
- sAdd:增加一個或多個成員
- sIsMember:是否包含
- sMembers:得到成員
- sMove:移動成員
- sPop:移除成員
- sRandMember:得到隨機成員
- sRem:刪除
f)sorted set
- zAdd:增加一個或多個
- zCard:成員個數
- zIncrBy:遞增成員score
- zRange:返回索引範圍內的成員
- zRangeByScore :返回score範圍內的成員
- zScore:獲取成員score
- zRem:移除一個或多個成員
更多信息請參考:https://github.com/nicolasff/phpredis
http://redis.io/clients