如果沒有連上 Redis 理當的確會顯示 error message,我還為了測出這個 Error 刻意把 Redis 停掉,不過這是必要的,因為網站放到 Server 之後,也是必須考慮會有 Redis 未開的情況。
這是 Error Message,當在 database 有設定連線 Redis 時,因為連不上 6379 Port:
我的解法其實也沒什麼特別的,雖然有用 try,但是並不打算把 catch 到的 expection 接起來,畢竟把 error 丟給 user 看,沒什麼太大的意義,撈不到 redis 資料就看不到畫面,也不是很合理 :P 那就讓撈不到 Redis 時,直接從 Database Query 出資料吧 :)
我的寫法並不高深,也不會很炫,但至少不會給 User 難看的錯誤訊息畫面...
這是 Error Message,當在 database 有設定連線 Redis 時,因為連不上 6379 Port:
我的解法其實也沒什麼特別的,雖然有用 try,但是並不打算把 catch 到的 expection 接起來,畢竟把 error 丟給 user 看,沒什麼太大的意義,撈不到 redis 資料就看不到畫面,也不是很合理 :P 那就讓撈不到 Redis 時,直接從 Database Query 出資料吧 :)
我的寫法並不高深,也不會很炫,但至少不會給 User 難看的錯誤訊息畫面...
try { // 先嘗試 Redis 連線,連到的話測試使否拿的到要的 Key $app = app(); $redis = $app['redis']->connection(); $your_data = json_decode($redis->get('YOUR_KEY')); //echo '從 Redis 取得'; if ($your_data == "") { // 如果 Redis 要不到資料,那就先跟資料庫拿,拿完之後打入 Redis //echo '跟資料庫要'; $data_from_db = Model::orderBy('createdAt','desc')->get(); $redis->set('YOUR_KEY', json_encode($data_from_db)); $your_data = json_decode($redis->get('YOUR_KEY')); }else{ $your_data = Model::orderBy('createdAt','desc')->get(); } } catch(Exception $e) { // 連不到 Redis 那就直接跟資料庫拿 //echo '跟資料庫要'; $your_data = Model::orderBy('createdAt','desc')->get(); } |