之前有一个需求,根据当前司机的坐标经纬度,搜索出距离当前司机位置5公里的货源。这是一类很常见的需求,比如附近的人,附近的电影院等等。第一个能想到的方法是,计算出所有货源与司机的距离,然后返回距离小于5公里的货源。但这种方法的问题是,如果整个系统的货源数量很大,算法的时间复杂度是O(n)。Redis自从3.2开始,基于geohash和zset提供里地理位置相关的功能。georadius就是那个...
实际场景:网页爬虫爬取网站时,需要对URL去重,避免对相同URL的网页进行爬取。你会如何快速地判断一个URL已经被爬取过?集合(Set)很多人,包括我,马上会想到使用集合,将爬取过的URL加入到集合,每次爬取前,在集合里判断是否已经存在。时间复杂度是O(1)。但使用集合有一个很大的问题,假设集合内有100亿条URL,每条URL平均64字节,整个集合的大小就达到了640G。位图(BitMap)...