我正在处理文章建议。它们很多。想想YouTube视频的建议。为了避免再次推荐文章,我想记住特定用户已经看过的文章。我有很多用户,我也想避免无限增长的历史数据库。
每篇文章都有MongoDB ObjectId。我使用Redis和Go语言。
我认为Bloom Filter可以解决这个问题,因为在这种情况下误报是可以的。我想避免误报,但这不是100%强制性的。
我不知道Bloom Filter在这方面有任何明智的选择。我应该吗?
我无法在Go中找到针对Redis的Bloom Filter的任何实现。有人可以建议我这是最好的选择吗,我怎么写自己的或者是否有任何现有的实现?
答案 0 :(得分:0)
对于遇到这篇文章的人来说,如果你在这种情况下使用Redis,那么你可能想要使用它的HyperLogLog feature; Antirez详细描述了here。无需弄清楚如何在Redis中制作布隆过滤器,它内置的内容也很好(并且它还可以告诉您大约已插入了多少项)。
答案 1 :(得分:0)
如@jumand所述,Redis有一个名为RedisBloom的模块,该模块提供Bloom过滤器,Cuckoo过滤器,Count-Min Sketch和TopK服务。