Tag: mongodb

Redis或Mongo确定一个数字是否在范围内?

我需要一种快速检查IP地址是否属于许多禁用IP范围之一的方法。 我目前使用iptables来检查IP是否属于指定范围。 这适用于几千个范围,但这个数字将急剧增加到几十万,并将继续增长。 我目前简单地向iptables添加新规则的方法的另一个问题是重复数量的增加。 我需要一种有效的方法来检查IP或范围在添加到规则集之前是否属于现有(更大)范围。 Ruby是我最熟悉的语言,但对于越来越多的范围,哪种数据结构是最佳选择? 我想出的一个解决方案是使用Redis集或MongoDB将各个IP存储为整数,然后只需检查集合中是否存在IP ……但我的直觉告诉我必须有一个更聪明的方法。 如果我要将IP转换为整数并存储范围,那么运行范围以查看新IP或范围是否已经包含在现有更大范围内的最佳方式是什么? 最后要注意:速度比内存成本更重要。