在Perl程序中,我缓存SQL请求结果以加快程序速度。
我看到了两种常见的方法:
我今天使用了第二个选项,因为当您知道某个给定的表已被更改时,它更容易清除它们的缓存。
我的问题是处理缓存清理,今天我所做的大多数选择查询都是针对很少更改的表进行的。所以当我运行更新/删除/..。我只是清理了这个表的哈希表部分,该部分缓存结果。
这对性能几乎没有影响,因为我很少需要清理经常使用的散列部分。
但是现在对于在大多数表上更新/删除更频繁的程序来说,这使得我的缓存效率大大降低,因为我经常需要清理它。
怎么处理呢?我目前的缓存系统非常简单,Cache::Memcached::Fast非常复杂。你有没有比我的解决方案更有效,但仍然很简单?
发布于 2010-06-22 23:52:00
我用于缓存不太可能改变的数据(例如配置数据)的一种方法是通过优秀的追忆模块使用回忆录。我将sql查询包装在传递绑定参数和表名的函数中,并回传该函数。
use Memoize;
sub get_config_for_foo
{
my ($table, $field1, $field2) @_;
# generate my sql query here, using table, field1 and field2...
return $result;
}
memoize(get_config_for_foo);您还可以在memcache或类似的东西中使用缓存策略;请查看Tie::Cache::LRU以获得一个很好的实现。
https://stackoverflow.com/questions/3097876
复制相似问题