我希望这个问题仍然是主题,但最近我找到了一个用Perl编程的键值存储。它非常简单,基于RAM,我认为它只是设置并获得了键的“过期”选项。我也认为它同时带有XS和纯Perl版本。
我现在已经搜索了很长一段时间,我不确定它是在CPAN还是我在GitHub上看到它。也许有人知道我在说什么。
答案 0 :(得分:1)
如果您可以解释模块在这方面的特殊功能,那么缩小范围可能会有所帮助。如果您希望通常使用缓存实现某些功能,我会指向CHI,这基本上是一个包含多个缓存驱动程序的常见API。
答案 1 :(得分:0)
你的意思是Cache吗?它可以在很多地方存储键/值对,包括共享内存。
答案 2 :(得分:0)
听起来你在描述Memcached。 CPAN上有Perl interface。
答案 3 :(得分:0)
我过去曾使用过Tie::Cache,效果非常好。它创建了一个绑定的哈希变量,当它超出配置的最大密钥数时,它表现出LRU行为。
my $cache_size = 1000;
use vars qw(cache);
%cache = ();
tie %cache, 'Tie::Cache', $cache_size;
从这里,您可以在%缓存中存储哈希/值对(当然,值侧可以是引用),如果它的大小增加到1000个密钥,LRU密钥将被删除,因为添加了更多。
在我的使用中,我将右侧存储为包含缓存值的arrayref以及缓存条目的时间戳;我的缓存引用代码检查时间戳并删除密钥而不使用它,如果条目不够新:
sub getCacheMatch {
my $check_value = shift;
my $timeout = 600; # 10 minutes
# Check cache for a match.
my ($result, $time_cached);
my $now = time();
my $time_cached;
my $cache_entry = $cache{$check_value};
if ($cache_entry) {
($result, $time_cached) = @{$cache_entry};
if ($now - $time_cached > $timeout) {
delete $cache{$check_value);
return undef;
} else {
return $result;
}
}
}
我在代码中的其他位置更新缓存,如下所示:
$url{$cache_checkstring} = [$value_to_cache, $now];