2012-08-03 72 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