Redis執行失敗后如何處理


Redis執行失敗后如何處理

redis出現錯誤的兩種情況:1) Redis連接失敗,系統異常   2)Redis執行失敗

1、redis連接失敗,拋出異常(RedisException類)

如果無法訪問Redis服務器,phpredis會拋出RedisException對象。如果連接 出現問題,Redis服務已關閉,或者redis主機壓力過大,則可能發生這種情況。在任何其他不涉及無法訪問的服務器(例如key不存在,無效命令等)的問題情況下,phpredis將返回FALSE。

解決方法:

1)依次檢查Linux,php,nginx,redis配置方面可能出現的問題

2)檢查phpredis連接redis用的方法是connect()還是pconnect()

說明:通常我們在使用phpredis連接redis的時候,都是用的connect()方法,在大量的php請求請求到redis的時候,這種方式會不斷的建立和關閉連接,占用很多資源,導致服務器出現大量的TIME_WAIT,這樣就會有很多php請求無法連接redis,出現Redis server went away這個異常,實際就說明redis服務沒有收到請求。

3)try ... catch ... 是必須要做的標准開發編程手段

下面給出一段參考代碼:

 1     public function testRedis()
 2     {
 3         $redis=new Redis();
 4         try {
 5             $redis->connect('127.0.0.1', 6379);
 6             $redis->setex('test_key', 60, 'test');
 7         } catch (\Exception $e) {
 8             die( "Cannot connect to redis server:".$e->getMessage() );
 9         }
10     }

 

2、執行失敗

這個比較簡單,根據phpredis手冊,針對執行失敗返回的結果進行處理即可

下面給出一段參考代碼:

1         //記錄分享次數
2         $res = $this->redis->incr('share' . $openid);
3         //執行成功,則設在緩存時間
4         if ($res) {
5             $this->redis->expire('share' . $openid, EXPIRE_TIME);
6         }

 

3、執行失敗,是否需要提示用戶?

這是需要視情況而定的,主要是根據這個執行失敗對用戶的影響程度

1)對用戶影響不大

比如點贊排行榜這種的,某個用戶的點贊成功與否對總的點贊次數影響不明顯,這種情況下使用redis緩存點贊失敗,無須提示用戶。

2)對用戶影響比較明顯

比如redis緩存的是用戶個人收藏的圖書信息,如果收藏失敗,就無法顯示收藏的圖書信息,直接影響到用戶的體驗,這種就需要友好地提示用戶。

 

 

 

參考鏈接:

phpredis中文手冊:https://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

phpredis英文手冊:https://github.com/phpredis/phpredis/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM