代码之家  ›  专栏  ›  技术社区  ›  radius

如何处理SQL查询结果缓存

  •  2
  • radius  · 技术社区  · 16 年前


    我看到了两种常见的方法:

    • here
    • 创建一个只有2个索引的哈希,第一个是已用表的列表,第二个是where子句

    今天我使用了第二个选项,因为当您知道某一组表已经被更改时,更容易清理它们的缓存。

    这对性能几乎没有影响,因为我很少需要清理经常使用的哈希部分。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ether    16 年前

    我用于缓存不太可能更改的数据(例如配置数据)的一种方法是使用memorization,通过 Memoize

    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 为了一个好的实施。