Ⅰ php redis如何使用
開始在 PHP 中使用 Redis 前,要確保已經安裝了 redis 服務及 PHP redis 驅動,且你的機器上能正常使用 PHP。
PHP安裝redis擴展
/usr/local/php/bin/phpize #php安裝後的路徑
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改php.ini文件
vi /usr/local/php/lib/php.ini
增加如下內容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
extension=redis.so
安裝完成後重啟php-fpm 或 apache。查看phpinfo信息,就能看到redis擴展。
連接到 redis 服務
<?php
//連接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//查看服務是否運行
echo "Server is running: " . $redis->ping();
?>
執行腳本,輸出結果為:
Connection to server sucessfully
Server is running: PONG
Redis PHP String(字元串) 實例
<?php
//連接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//設置 redis 字元串數據
$redis->set("tutorial-name", "Redis tutorial");
// 獲取存儲的數據並輸出
echo "Stored string in redis:: " . jedis.get("tutorial-name");
?>
執行腳本,輸出結果為:
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Redis PHP List(列表) 實例
<?php
//連接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//存儲數據到列表中
$redis->lpush("tutorial-list", "Redis");
$redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql");
// 獲取存儲的數據並輸出
$arList = $redis->lrange("tutorial-list", 0 ,5);
echo "Stored string in redis:: "
print_r($arList);
?>
執行腳本,輸出結果為:
Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
Redis PHP Keys 實例
<?php
//連接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
// 獲取數據並輸出
$arList = $redis->keys("*");
echo "Stored keys in redis:: "
print_r($arList);
?>
執行腳本,輸出結果為:
Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list
Ⅱ php怎樣使用redis緩存數據
<?php
/**
* Redis緩存操作
* @author hxm
* @version 1.0
* @since 2015.05.04
*/
class RCache extends Object implements CacheFace
{
private $redis = null; //redis對象
private $sId = 1; //servier服務ID
private $con = null;//鏈接資源
/**
* 初始化Redis
*
* @return Object
*/
public function __construct()
{
if ( !class_exists('Redis') )
{
throw new QException('PHP extension does not exist: Redis');
}
$this->redis = new Redis();
}
/**
* 鏈接memcahce服務
*
* @access private
* @param string $key 關鍵字
* @param string $value 緩存內容
* @return array
*/
private function connect( $sid )
{
$file = $this->CacheFile();
require $file;
if(! isset($cache) )
{
throw new QException('緩存配置文件不存在'.$file);
}
$server = $cache[$this->cacheId];
$sid = isset($sid) == 0 ? $this->sId : $sid;//memcache服務選擇
if ( ! $server[$sid])
{
throw new QException('當前操作的緩存伺服器配置文件不存在');
}希望能幫到你,我還在後盾網學習呢,有不會的可以問我,一會有空回答你。(^ω^)
Ⅲ 如何使用phpredis緩存靜態頁面
開始在 PHP 中使用 Redis 前,要確保已經安裝了 redis 服務及 PHP redis 驅動
Ⅳ windows下php怎麼通過redis擴展使用redis
打開一個cmd窗口,先切換到redis所放目錄,運行 redis-server.exe
注意redis.conf為配置文件,主要配置了redis所使用的埠等信息(如果不寫則默認redis.conf)
有的下載的redis壓縮包里沒有redis.conf,我把默認的redis.conf的文件內容放在文章最後。
Ⅳ php redis 什麼時候用
默認情況下,Redis
服務會提供
16
個資料庫,PHPHub
使用
0
號資料庫來做緩存,1
號資料庫來做會話存儲
-
Laravel
下配置
Redis
讓緩存、Session
各自使用不同的
Redis
資料庫_PHPHub
隊列的話使用
Beanstalkd
最常用的就是緩存、隊列,當然還有很多其它的,如歸並計算、去重等。
我根據自己使用Redis的場景及個人最佳實踐,整理了一篇文章,redis應用場景與最佳實踐
比如網站搶購時,可以使用redis做隊列,可以使用redis來代替session功能,還有可以拿redis中的無序集合做socket的客戶端id存儲。
Ⅵ php怎麼使用 redis pub/sub
一.場景介紹
最近的一個項目需要用到發布/訂閱的信息系統,以做到最新實時消息的通知。經查找後發現了redis pub/sub(發布/訂閱的信息系統)可以滿足我的開發需求,而且學習成本和使用成本也比較低。 :grin:
二.什麼是redis pub/sub
資料查看
大家在看我的blog的同時可以打開redis官方對於redis pub/sub的介紹,感覺看英文文檔吃力的話 :cry: ,可以看redis中文網的翻譯介紹.
Pub/Sub功能(means Publish, Subscribe)即發布及訂閱功能
1> 基於事件的系統中,Pub/Sub是目前廣泛使用的通信模型,它採用事件作為基本的通信機制,提供大規模系統所要求的鬆散耦合的交互模式:訂閱者(如客戶端)以事件訂閱的方式表達出它有興趣接收的一個事件或一類事件;發布者(如伺服器)可將訂閱者感興趣的事件隨時通知相關訂閱者。
2> 消息發布者,即publish客戶端,無需獨占鏈接,你可以在publish消息的同時,使用同一個redis-client鏈接進行其他操作(例如:INCR等)
3> 消息訂閱者,即subscribe客戶端,需要獨占鏈接,即進行subscribe期間,redis-client無法穿插其他操作,此時client以阻塞的方式等待「publish端」的消息;這一點很好理解,因此subscribe端需要使用單獨的鏈接,甚至需要在額外的線程中使用。
三.redis pub/sub的使用
下面我將配著實圖(用我的本地機器環境)來為大家講解redis的pub/sub怎麼去使用 .
沒有安裝phpredis擴展的或者沒有redis服務的,請參考我的另一篇blog,有詳細的安裝介紹,這里不再贅述了。
1、啟動redis服務端:
[caption id="attachment_1777" align="alignnone" width="300"] php redis pub/sub(消息訂閱系統)經驗總結之一[/caption]
2、新開一個終端,啟動redis客戶端,並做為subscribe客戶端(消息訂閱者),訂閱一個名字叫test的頻道的頻道信息:
3、啟動redis客戶端,並做為publish客戶端(消息發布者),發布一個名字叫test的頻道,信息是:hello,world
4、再切換到2步驟中的redis客戶端窗口,會發現,已經訂閱到了剛才發布的 'hello,world'消息:
5、模式匹配訂閱
Redis 的Pub/Sub實現支持模式匹配。客戶端可以訂閱全風格的模式以便接收所有來自能匹配到給定模式的頻道的消息。
比如,將接收所有發到 test.name,test.phone,test.address...等等的消息,該這樣寫:
[shell]PUBSCRIBE test.*[/shell]
在終端回車後,同時再新的窗口裡分別發布兩個頻道的消息,名字分別為:test.name和test.phone,然後切換到訂閱端的窗口裡,結果如下圖所示:
由上圖可以看出,在訂閱了test.*頻道後,一共收到了 test.name和test.phone兩個頻道的消息,這就是模式匹配訂閱。
那麼取消訂閱匹配該模式的客戶端也比較簡單:
[shell]PUNSUBSCRIBE test.*[/shell]
6、好,以上的這些簡單的demo,就是關於redis pub/sub(Publish/Subscribe,發布/訂閱的信息系統)的最基本使用。說了這么多,跟php也沒有掛上什麼鉤,別著急,重要的都往往最後出場。 :lol:
四.php使用redis的pub/sub(發布/訂閱的信息系統)
這里我列出一些常用的命令:
phpredis的安裝
redis的客戶端連接支持多種語言。這里我用的是php的phpredis,它是用c語言編寫的,目前已經作為php的一個模塊擴展,沒有安裝的可以參考我的另一篇blog,已經安裝的可以忽略此步驟.
命令手冊
這里我列出一些常用的:
[shell]Redis::__construct構造函數
$redis = new Redis();
connect, open 鏈接redis服務
參數
host: string,服務地址
port: int,埠號
timeout: float,鏈接時長 (可選, 默認為 0 ,不限鏈接時間)
注: 在redis.conf中也有時間,默認為300
pconnect, popen 不會主動關閉的鏈接
參考上面
setOption 設置redis模式
getOption 查看redis設置的模式
ping 查看連接狀態
get 得到某個key的值(string值)
如果該key不存在,return false
set 寫入key 和 value(string值)
如果寫入成功,return ture
setex 帶生存時間的寫入值
$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
setnx 判斷是否重復的,寫入值<br />$redis->setnx('key', 'value');
$redis->setnx('key', 'value');
delete 刪除指定key的值
返回已經刪除key的個數(長整數)
$redis->delete('key1', 'key2');
$redis->delete(array('key3', 'key4', 'key5'));
<span style="font-size: 16px; line-height: 24px;">
[/shell]
更詳細的使用請參考這里,我就不寫太多,因為我要直接摞代碼了. :lol:
publish(消息發布端):pub.php
[php]
/**
* redis sub(消息訂閱端)
* @ blog: phping.sinaapp.com
* @date 2016-04-24 15:00
*/
$redis = new Redis();
// 第一個參數為redis伺服器的ip,第二個為埠
$res = $redis->connect('127.0.0.1', 6379);
// test為發布的頻道名稱,hello,world為發布的消息
$res = $redis->publish('test','hello,world');
[/php]
subscribe(消息訂閱端): sub.php
[php]
/**
* redis sub(消息訂閱端)
* @ blog: phping.sinaapp.com
* @date 2016-04-24 15:00
*/
$redis = new Redis();
$res = $redis->pconnect('127.0.0.1', 6379,0);
$redis->subscribe(array('test'), 'callback');
// 回調函數,這里寫處理邏輯
function callback($instance, $channelName, $message) {
echo $channelName, "==>", $message,PHP_EOL;
}
[/php]
開始訂閱redis消息
前面已經提到過,消息訂閱者,即subscribe客戶端,需要獨占鏈接,即進行subscribe期間,redis-client無法穿插其他操作,此時client以阻塞的方式等待「publish端」的消息,所以我們用命令行來執行:
則 訂閱消息的redis客戶端已經啟動,隨時等待發布過來的消息並訂閱該消息.
發布redis消息
同樣,命令行執行消息發布端的腳本即可:
[shell]
php pub.php
[/shell]
切換到消息訂閱端的窗口發現終端有輸出,如下圖:
哈哈,是不是 收到了發布端發布的'hello,world'這條消息呢。
五.總結
在命令執行redis訂閱端腳本時,發現在終端會輸出:
[shell]
PHPFatalerror: Uncaughtexception'RedisException'withmessage'readerroronconnection'in…
[/shell]
這樣的錯誤是什麼原因呢?請看我下一篇blog,本篇主要是講一些基本的語法,在下一篇我會著重講解一些在實際開發中遇到過的哪些問題和跳過的哪些坑。。。 :mrgreen:
碼字不易,望轉載註明出處哈 ;)
Ⅶ thinkphp中的redis怎麼用啊
config.php 加如下代碼 ip根據自己的來修改
'DATA_CACHE_PREFIX' => 'Redis_',//緩存前綴
'DATA_CACHE_TYPE'=>'Redis',//默認動態緩存為Redis
'REDIS_RW_SEPARATE' => true, //Redis讀寫分離 true 開啟
'REDIS_HOST'=>'192.168.91.102', //redis伺服器ip,多台用逗號隔開;讀寫分離開啟時,第一台負責寫,其它[隨機]負責讀;
'REDIS_PORT'=>'6379',//埠號
'REDIS_TIMEOUT'=>'300',//超時時間
'REDIS_PERSISTENT'=>false,//是否長連接 false=短連接
'REDIS_AUTH'=>'',//AUTH認證密碼
任意控制器下的方法下寫:
測試redis
$redis = new \Redis();
$redis->connect('192.168.91.102',6379);
$redis->set('test','hello world!');
echo $redis->get("test");
Ⅷ redis使用php怎麼進行更新
php/redis 更新緩存的問題 [ 2.0 版本 ]
if(!$redis->exists('cache'))
{
echo '寫入緩存<br>';
$sql = "select * from user limit 0,3";
$rs = mysqli_query($connect,$sql) or die('db conn error');
while( $result = mysqli_fetch_assoc($rs) )
{
array_push($results,$result);
}
$cache = json_encode($results);
echo $cache;
$redis->set('cache',$cache,1200);
}
else
{
echo '讀取緩存<br>';
echo $redis->get('cache');
}
後台進行add/update/delete時,自動讓緩存失效。
Ⅸ php操作redis怎樣創建多個集合
string或BOOL 如果鍵不存在,則返回 FALSE。否則,返回指定鍵對應的value值。
範例:<?php
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
$result = $redis->get('test');
var_mp($result); //結果:string(11) "11111111111"
?>
Ⅹ php怎麼用
推薦閱讀:騰訊T3-T4標准精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個台階(持續更新)點擊此處