Redis有序队列生产场景的使用
线上系统功能有个场景,需要获取代理IP进行爬取数据。对接的代理IP的返回接口每个IP有存活时间,需要保证一直取到的IP是有效IP,之前代码实现是定时拉取代理IP,并存放在Redis中,存活时间即Redis key的过期时间,取的时候以key的前缀查找随机取一个。这种方式实现简单,也符合需求,但是上线后Redis预警很多,查看慢日志发现大部分是该功能模糊查找key这个问题。
对于这个场景可以采用Redis 有序队列sorted set来实现,相关命令是zdd-插入,zrange-获取。定时拉取代理IP,以存活时间+拉取时间秒数作为score存入Redis中,获取的时候则是按score降序,取前10中随机一个,这样能取到最新的代理IP,满足需求。这样优化后上线Redis的预警恢复正常了。
Redis keys命令用于查找所有符合给定模式 pattern 的 key ,在生产环境Redis的key可以达到几十万,所以命令会占用大量性能,一般来说生产环境会建议禁用keys命令该功能。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
