Redis sortedset 跳跃表实现代理ip池

        线上系统功能有个场景,需要获取代理IP进行爬取数据。对接的代理IP的返回接口每个IP有存活时间,需要保证一直取到的IP是有效IP。

        第一种实现方案,使用redis key 过期时间的特性,定时拉取代理IP,并存放在Redis中,存活时间即Redis key的过期时间,取的时候以key的前缀查找随机取一个。这种方式实现简单,也符合需求,但是上线后Redis预警很多,查看慢日志发现大部分是该功能模糊查找key这个问题。

        对这个问题需要优化一下,采用第二种方案 ,使用Redis 有序队列sorted set来实现,sorted set可以对元素设置分值属性,并且支持按分值排序获取。相关命令是zdd-插入,zrange-获取,zrem-移除。定时拉取代理IP,以存活时间+拉取时间秒数作为score存入Redis中,获取的时候则是按score降序,取前10中随机一个,这样能取到最新的代理IP,满足需求。这样优化后上线Redis的预警恢复正常了。

        Redis keys命令用于查找所有符合给定模式 pattern 的 key ,在生产环境Redis的key可以达到几十万,所以该命令会占用大量性能,一般来说生产环境会建议禁用keys命令该功能。

        代理ip用的快代理,性价比高,文档也比较完善。之前使用过站大爷,发现费用比这边贵一半就没用了,IP质量差不多

【快代理】企业级代理IP服务,极速稳定,安全可靠。爬虫工程师的绝佳选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值