- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
Hyperlog日志是一种概率算法根据 redis HLL 文档,我们可以得到 0.81% 的错误,但我得到 17-20% 的错误
我认为有问题.. 这是我的简单 perl 测试脚本。有没有错误
#!/usr/bin/perl -w
use Redis;
my $redis = Redis->new(server=>'192.168.50.166:6379') or die;
my $fp=0;
my $HLL="HLL";
$redis->del($HLL);
foreach my $i (1..10000) {
my $s1 = $redis->pfadd($HLL,$i);
if($s1 == 0){
print "False positive on $i\n";
$fp++;
}
}
print "count of false positives $fp\n";
最佳答案
HyperLogLog
用于计算唯一项目。它可以用很少的内存来计算大量的项目。但是,返回的基数并不精确,而是近似于标准错误
。
0.81% 是标准错误
,而不是误报。对于您的实例,您可以调用 PFCOUNT HLL
来获取您放入 HyperLogLog
中的唯一项目的近似数量。返回的数字应在 [10000 * (1 - 0.81%), 10000 * (1 + 0.81%)] 范围内
。
PFADD
如果估计的基数在执行命令后发生更改,则返回 1。否则返回 0。它与 false positive
无关。
看来你需要的是一个Bloom Filter ,它可以告诉您某个项目是否已存在于数据集中,但存在误报。当然,您可以使用 Redis 实现 Bloom Filter
。并且应该有一些开源项目。
关于perl - redis HLL 误报太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42924393/
这是我一直在寻找的问题,但我还没有得到合适的答案:( 哈佛架构如何映射到 C/C++ 语言(高级语言)? 它们之间有什么关系,或者该架构对 HLL 有何帮助? 最佳答案 哈佛与普林斯顿体系结构与 C+
我是一名电子专业的学生,我主要使用汇编编程。昨晚我看到一篇很棒的文章,讨论了用 Ruby 编写编译器。作者所做的是使用 GCC 来查看 C 是如何转换为 Assembly 的。这引起了我很大的共鸣
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
Hyperlog日志是一种概率算法根据 redis HLL 文档,我们可以得到 0.81% 的错误,但我得到 17-20% 的错误 我认为有问题.. 这是我的简单 perl 测试脚本。有没有错误 #!
我有一个有点大的表(1.3 亿行),我可以在 10 分钟内在同一台服务器上处理它,并生成一个精简的、预先聚合的表,它工作得很好,每个人都很高兴使用它。 该表按大约 6 列分组,其余列使用 SUM()
相关表架构示例: +---------------------------+-------------------+ | activity_date - TIMESTAMP | user_id - S
假设我有一个使用以下命令设置的位图 setbit key 0 1 setbit key 1 1 setbit key 2 0 setbit key 3 1 setbit key 4 1 当我从 red
需要能够报告唯一身份访问者,但希望避免预先计算每个可能的键排列和创建多个表。 作为一个简单的例子,假设我需要在包含以下列的表中报告每月唯一身份 日期(月/年) 页面编号 country_id devi
我是一名优秀的程序员,十分优秀!