2012-08-03 71 views
0

我有下面這個方法給我一個類別內的產品的計數。我想在我的redis服務器中緩存計數。我能夠做到這一點,但我不確定如何破解緩存,我的概念還不清楚。任何幫助或想法,將不勝感激。用mysql,php和redis緩存noob

public static function products(){ 
      $prods = $this>getProducts(); 
      $Count = count($prods); 
     if($Count){ 
      // save the count to redis 
      $redis->saveCount($count); 

     }      

} 

我什麼時候打了SQL數據庫($prods = $this>getProducts();)來獲取計數,當我剛剛從Redis的得到它?另外,我該如何知道何時該做什麼以及何時在redis中破壞舊記錄?

感謝

+0

你是什麼意思「胸部緩存」?有什麼樣的黑幫高速緩存在外面漫遊?或者你只是想讓頁面不緩存? – Matt 2012-08-03 18:26:12

+0

我想我會去與gangsta選項...但現在考慮它,讓我們說我想php邏輯打mysql ...哎呀「打」是一個黑手黨郎太:)? – Autolycus 2012-08-03 18:53:36

+0

我認爲你要找的是無緩存頭。這裏是相關的[PHP文檔](http://php.net/manual/en/function.header.php)。只需做一個ctrl + f「緩存」 – Matt 2012-08-03 18:56:57

回答

1

當您插入在Redis的計數也將其插入插入的時間。然後,當頁面加載時,如果時間大於X分鐘或小時,從Redis服務器獲取計數和時間,則從產品數據庫中提取實際計數並重復。那是你在找什麼?

+0

類似的..但我想只緩存新的數據,如果數據在mysql中更改... – Autolycus 2012-08-03 18:54:27

+0

這聽起來不像是一個緩存給我。如果我正在實現它,我會在MySql端使用觸發器來更新Redis。如果你有PHP的命令行訪問權限,你可以使用這個問題中描述的方法從MySQL觸發器運行上面的腳本http://stackoverflow.com/questions/1467369/invoking-a-php-script-from-a-mysql -觸發。然後從你的頁面上,你可以看看Redis,根本不用接觸MySQL數據庫。 – Samuel 2012-08-03 19:21:57