導航:首頁 > 編程語言 > php調用redis

php調用redis

發布時間:2022-11-29 05:37:42

php使用redis的有序集合zset實現延遲隊列

延遲隊列就是個帶延遲功能的消息隊列,相對於普通隊列,它可以在指定時間消費掉消息。

我們通過redis的有序集合zset來實現簡單的延遲隊列,將消息數據序列化,作為zset的value,把消息處理時間作為score,每次通過zRangeByScore獲取一條消息進行處理。

然後,我們寫一個php腳本,用來處理隊列中的任務。

Ⅱ 用phpredis操作redis集群支持publish和subscribe嗎

用phpredis操作redis集群支持publish和subscribe
參數可選Redis::MULTI或Redis::PIPELINE. 默認是 Redis::MULTI
Redis::MULTI:將多個操作當成一個事務執行
Redis::PIPELINE:讓(多條)執行命令簡單的,更加快速的發送給伺服器,但是沒有任何原子性的保證
discard:刪除一個事務
返回值
multi(),返回一個redis對象,並進入multi-mode模式,一旦進入multi-mode模式,
以後調用的所有方法都會返回相同的對象,只到exec()方法被調用。

watch, unwatch (代碼測試後,不能達到所說的效果)
監測一個key的值是否被其它的程序更改。如果這個key在watch 和 exec (方法)間被修改,
這個 MULTI/EXEC 事務的執行將失敗(return false)
unwatch 取消被這個程序監測的所有key

Ⅲ thinkphp5框架擴展redis類方法示例

本文實例講述了thinkphp5框架擴展redis類方法。分享給大家供大家參考,具體如下:
筆者在開發時發現,thinkphp5的自帶redis類方法,只有簡單的讀取緩存、寫入緩存的基本方法,遠不能滿足我們業務的需求。redis本身支持五種數據類型,string(字元串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。redis的東西就不必再介紹了,接下來還是讓我一起擴展thinkphp5的redis方法吧!
首先我們先找到緩存驅動類里的,handler()方法,這個方法是返回Redis類的實例化對象的。
這就是實例化對象,包括了options配置項、handler資源句柄、tag標簽。實際上這里的handler是new
Redis()的對象實例。只要在外部拿到handler資源句柄,則可以對redis的操作進行擴展了。
在cache類里新增一個getHandler方法。
然後我們就可以在控制器調用了
列印的就是這個redis對象了
這里需要注意的是:
一個是調thinkphp5的redis的方法,就是這樣用。
一個是如果你要調用原生的redis方法
基本的用法都講完了。
接下來就愉快的開始擴展redis方法吧。
先找到這個類
這個類里並沒有list的相關操作方法,那我們就來擴展list的相關方法。
這里的話,我就舉一個例子了。
在控制器里去調用
這樣就寫入成功了。
更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:針對thinkPHP5框架存儲過程bug重寫的存儲過程擴展類完整實例ThinkPHP行為擴展Behavior應用實例詳解ThinkPHP應用模式擴展詳解ThinkPHP框架設計及擴展詳解ThinkPHP的Widget擴展實例老生常談ThinkPHP中的行為擴展和插件(推薦)TP5(thinkPHP5)框架mongodb擴展安裝及特殊操作示例thinkPHP下的widget擴展用法實例分析thinkPHP3.2.2框架行為擴展及demo示例ThinkPHP5.0框架驗證碼功能實現方法【基於第三方擴展包】thinkphp5框架實現的自定義擴展類操作示例

Ⅳ 為什麼php調用redis 返回+ok

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 查看連接狀態
KEY相關操作
DEL
移除給定的一個或多個key。
如果key不存在,則忽略該命令。
時間復雜度:
O(N),N為要移除的key的數量。
移除單個字元串類型的key,時間復雜度為O(1)。
移除單個列表、集合、有序集合或哈希表類型的key,時間復雜度為O(M),M為以上數據結構內的元素數量。
返回值:
被移除key的數量。這樣呢我自己學習在後盾人看見的,老師講的很詳細,希望對你有用😊(ง •̀_•́)ง努力

Ⅳ 如何利用PHP訪問帶有密碼的Redis

1. 設置Redis密碼,以提供遠程登陸
打開redis.conf配置文件,找到requirepass,然後修改如下:
requirepass yourpassword

yourpassword就是redis驗證密碼,設置密碼以後發現可以登陸,但是無法執行命令了。
命令如下:
redis-cli -h 127.0.0.1 -p 6379//啟動redis客戶端,並連接伺服器
keys * //輸出伺服器中的所有key

報錯如下
(error) ERR operation not permitted
這時候你可以用授權命令進行授權,就不報錯了
命令如下:
auth youpassword

2. PHP訪問Redis

$redis = new Redis();
$conn = $redis->connect('localhost', 6379);
$auth = $redis->auth('20160601'); //設置密碼
var_mp($auth);
$redis->set('access_token', "123213213213213213");
$redis->set('expired_time', 1464344863);

var_mp($redis->get("access_token"));
var_mp($redis->get("expired_time"));

Ⅵ 為什麼php調用redis 返回+ok

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 查看連接狀態

KEY相關操作

DEL

移除給定的一個或多個key。

如果key不存在,則忽略該命令。

時間復雜度:

O(N),N為要移除的key的數量。

移除單個字元串類型的key,時間復雜度為O(1)。

移除單個列表、集合、有序集合或哈希表類型的key,時間復雜度為O(M),M為以上數據結構內的元素數量。

返回值:

被移除key的數量。

Ⅶ 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:
碼字不易,望轉載註明出處哈 ;)

Ⅷ windows下php怎麼通過redis擴展使用redis

打開一個cmd窗口,先切換到redis所放目錄,運行 redis-server.exe
注意redis.conf為配置文件,主要配置了redis所使用的埠等信息(如果不寫則默認redis.conf)
有的下載的redis壓縮包里沒有redis.conf,我把默認的redis.conf的文件內容放在文章最後。

Ⅸ windows 7 php怎麼通過redis擴展使用redis

PHP 7安裝Redis擴展

1、php操作第一步就是要安裝對應的擴展。在Windows環境下則是對應的.dll文件。Windows環境下由於編譯環境不同,對應擴展在選擇的時候需要注意當前php的先關信息。可以通過phpinfo()查看。如果可以看到對應的環境,這在選擇擴展的時候有用

2、選擇對應PHP環境擴展
通過以上圖我們可以看到「VC14」和「ts」這樣的字樣,如果不明白的同學在找對應擴展的時候也一樣要找到這樣的字樣。

3、安裝PHP 7擴展
下載php_redis-20160319-ts-vc14-x64.zip之後解壓,將解壓後的php_redis.dll文件放到php\ext目錄下。然後在php.ini末尾添加extension=php_redis.dll。重啟Apache服務。再次通過phpinfo()查看,如圖表示安裝成功
測試例子

1、擴展安裝成功之後需要驗證下是否可以用。web伺服器目錄下創建文件輸入下面內容:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->set('test','hello redis');
echo $redis->get('test');
?>
2、然後在網頁上訪問,如果有hello redis輸入則表示擴展安裝成功。

閱讀全文

與php調用redis相關的資料

熱點內容
生成hostkey演算法 瀏覽:620
重生香港買股票起家 瀏覽:623
職業規劃程序員作文 瀏覽:926
如何安全關閉伺服器 瀏覽:452
文件夾分成了兩欄怎麼辦 瀏覽:379
宅運的最好演算法 瀏覽:358
304數控編程 瀏覽:576
干程序員有前途嗎 瀏覽:997
成龍保安公司電影 瀏覽:981
彼時曾相伴完整版網盤 瀏覽:351
android分享圖片到qq空間 瀏覽:260
日漫電影主角是小人 瀏覽:194
一個叫悟空的外國電影 瀏覽:703
重生八路軍抗日的小說 瀏覽:255
日本愛情電影有哪些 瀏覽:865
java大學實用教程答案 瀏覽:671
看電視劇的免費網站下載 瀏覽:529
直接看的網站懂得都懂 瀏覽:104
誇克解壓在哪個位置 瀏覽:522
在阿里雲上開發遠程伺服器 瀏覽:570