本文目錄一覽:
- 1、如何測試 php安裝成功redis
- 2、怎麼看 php 本地redis是phpredis還是predis
- 3、訂單超時,活動過期解決方案:php監聽redis鍵重複觸發引發事件
- 4、如何在 Windows 環境下安裝 Redis 和 phpredis 模塊
- 5、怎麼安裝redis PHP擴展,windows下
- 6、redis的php客戶端為什麼連接數這麼大
如何測試 php安裝成功redis
解壓安裝:
複製代碼代碼如下:
tar -xvf redis-2.8.17.tar.gz
make
sudo make install
為方便使用,在/usr目錄下創建redis目錄,講如下幾個文件拷貝到/usr/redis/目錄下:
複製代碼代碼如下:
/yourdir/redis-2.8.17/redis.conf
/yourdir/redis-2.8.17/src/redis-benchmark
/yourdir/redis-2.8.17/src/redis-server
/yourdir/redis-2.8.17/src/redis-cli
當然,你也可以通過軟連接的方式達到方便使用的目的。此外,你也可以將redis-server加入開機啟動,此處從略。
2.redis測試
1)先開啟redis服務端程序
為方便測試,我們將redis.conf配置文件中的loglevel和logfile的值,修改後如下:
loglevel debug
logfile 「/tmp/redis.log」
jay13@ubuntu:/usr/redis$ redis-server redis.conf
2)開啟redi客戶端,通過客戶端向redis數據庫中進行增刪改查操作。整個操作過程中生成的日誌可以到/tmp/redis.log中查看。
以最簡單的key操作為例,實例如下:
複製代碼代碼如下:
jay13@ubuntu:/usr/redis$ redis-cli
127.0.0.1:6379 set jay13 jb51.net
OK
127.0.0.1:6379 set jay hello,world
OK
127.0.0.1:6379 get jay
“hello,world”
127.0.0.1:6379 get jay13
“jb51.net”
127.0.0.1:6379 del jay
(integer) 1
127.0.0.1:6379 get jay
(nil)
127.0.0.1:6379 set jay13
OK
127.0.0.1:6379 get jay13
“”
3.安裝phpredis擴展
在使用sudo apt-get install php5安裝php時,默認是沒有安裝phpize的,我們安裝phpredis時,需要用到phpize,因此,需要先安裝phpize。
1)我們通過安裝php開發者工具來獲取phpize。執行如下命令即可:
複製代碼代碼如下:
sudo apt-get install php5-dev
2)獲取phpredis源文件
按照GitHub上的說明進行如下安裝時,
複製代碼代碼如下:
phpize
./configure –enable-redis-igbinary
make make install
可能會出現如下出錯說明:
複製代碼代碼如下:
checking for igbinary includes… configure: error: Cannot find igbinary.h
怎麼看 php 本地redis是phpredis還是predis
Redis支持的客戶端種類非常多,包括C、Java、PHP、Python等,本文主要介紹PHP客戶端的安裝和使用。
Redis的客戶端實際上擔負了通過網絡協議與Redis Server進行通信的過程,通信的過程必須遵循協議規範,讓客戶的調用更加符合特定語言的使用習慣。
訂單超時,活動過期解決方案:php監聽redis鍵重複觸發引發事件
訂單超時,活動過期解決方案:php監聽redis鍵重複觸發引發事件
Redis的2.8.0版本之後可用,鍵空間消息(Redis Keyspace Notifications),配合2.0.0版本之後的SUBSCRIBE 可以完成這個定時任務的操作了,定時的單位是秒。
1.我們先訂閱頻道稱為 redisChat
2.現在,我們重新開啟個redis客戶端,然後在同一個頻道redisChat發佈消息,訂閱者可以接收到消息。
接收到的消息如下:
3.Key過期事件的Redis配置
需要這裡配置notify-keyspace-events的參數為「EX」 .X代表了過期事件。notify-keyspace-events 「Ex」保存配置後,重啟Redis的服務,使配置生效。
PHP Redis實現訂閱鍵空間通知
redis實例化類:
redis.class.php
1個
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18歲
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//遇到類別重複的報錯,所有叫Redis2
classRedis2
{
private$redis;
publicfunction__construct($host= ‘127.0.0.1’, $port= 6379)
{
$this-redis = newRedis();
$this-redis-connect($host, $port);
}
publicfunctionsetex($key, $time, $val)
{
return$this-redis-setex($key, $time, $val);
}
publicfunctionset($key, $val)
{
return$this-redis-set($key, $val);
}
publicfunctionget($key)
{
return$this-redis-get($key);
}
publicfunctionexpire($key= null, $time= 0)
{
return$this-redis-expire($key, $time);
}
publicfunctionpsubscribe($patterns= array(), $callback)
{
$this-redis-psubscribe($patterns, $callback);
}
publicfunctionsetOption()
{
$this-redis-setOption(\Redis::OPT_READ_TIMEOUT, -1);
}
}
過期事件的訂閱:
psubscribe.php
1個
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require_once’./Redis.class.php’;
$redis= new\Redis2();
// 解決Redis客戶端訂閱時候超時情況
$redis-setOption();
$redis-psubscribe(array(‘__keyevent@0__:expired’), ‘keyCallback’);
// 回調函數,這裡寫處理邏輯
functionkeyCallback($redis, $pattern, $chan, $msg)
{
echo”Pattern: $pattern\n”;
echo”Channel: $chan\n”;
echo”Payl
oad: $msg\n\n”;
//keyCallback為訂閱事件後的回調函數,這裡寫業務處理邏輯,
//比如前面提到的商品不支付自動撤單,這裡就可以根據訂單id,來實現自動撤單
}
設置過期事件:
index.php
1個
2
3
4
require_once’./Redis.class.php’;
$redis= new\Redis2();
$order_id= 123;
$redis-setex(‘order_id’,10,$order_id);
先用命令行模式執行 psubscribe.php
在瀏覽器訪問 index.php
效果如下:
如何在 Windows 環境下安裝 Redis 和 phpredis 模塊
1下載安裝文件,選擇穩定版本2點擊安裝exe文件,進行安裝。選擇好路徑,一直到安裝結束即可。
3點擊Service查看Redis服務是否正確的安裝。Windows–》Service.msc。默認的端口為6379。服務已啟動。
4使用客戶端工具進行連接,出現如下畫面即成功。
5使用CMD工具,安裝另一個Redis實例服務,端口為6369.需要提前建好6369端口使用的conf文件
如:C:\Users\GrayE:\redis-2.8.17\redis-server.exe –service-installE:\redis-2.8.17\redis6369.conf –service-name RedisServer6369 –port 6369
試驗了幾次都沒有提示成功的信息,但是查看服務成功了,而且用客戶端連接也成功了。
6查看6369端口的redis服務
7使用客戶端連接6369 redis服務,出現如下界面表示成功
8至此,大功告成。
怎麼安裝redis PHP擴展,windows下
1、根據php信息,如下圖,下載合適的 phpredis.dll擴展包。下載地址:
用phpinfo 查看到時TS vc9。那麼下載的版本就對應好
ts版 phpredis_5.4_vc9_ts.7z nts版 phpredis_5.4_vc9_nts.7z
2、解壓縮之後得到兩個文件,分別將兩個文件複製到php 目錄的 ext目錄下。
3、修改php.ini文件。加入extension 擴展
extension=php_igbinary.dll
extension=php_redis.dll
4、 重啟apache ,查看phpinfo 界面。如下則表示安裝成功
5、phpredis hellow word 開始你的redis使用
?php
$redis = new Redis(); //redis對象
$redis-connect(“192.168.60.6″,”6379”); //連接redis服務器
$redis-set(“test”,”Hello World”); //set字符串值
echo $redis-get(“test”); //獲取值
?
感謝網友分享。
redis的php客戶端為什麼連接數這麼大
第一,Redis的默認時間設置在redis.conf中timeout是300秒,請問是否修改過這個參數,修改為多少了? 第二,你用的這個redis擴展,這種用法$redis-connect(‘127.0.0.1’, 6379);意味着超時時間未設置,會一直不超時。關於這點,請詳細查看該擴展的文章。
根據你提供的不多的信息估計,最可能的是第二條中你未設置連接時間,用了默認不超時的方式。但是你說的是在30秒後斷開,又不是符合redis.conf的默認配置。除非你修改了默認配置就說的通了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/207072.html