针对失效 ip 的问题我是这么解决的,分两块, 第一单独开一个线程定期扫描 ip 库添加可用的 ip 到 set 中。第二用的时候随机取, 但是需要封装统一 http 请求捕获异常,并且把请求超时时间设置的比较短。 当发生任何请求失败时从 redis set 中删除这个 ip , 这样基本上可以保证可用 ip 池都是新鲜可用的, 唯一的缺点就是失败的请求要重新取 ip 重试, 耽误几秒钟
xuanbg
2023-07-23 07:33:52 +08:00
zset 存 ip ,每次取 score 最小的,然后将这个 ip 的 score+1
18870715400
2023-07-23 10:11:35 +08:00
好像可以使用一致性哈希算法来解决
pastgift
2023-07-23 12:17:47 +08:00
list 也可以移除 ip 吧
pastgift
2023-07-23 12:18:00 +08:00
127.0.0.1:6379> lpush test a (integer) 1 127.0.0.1:6379> lpush test b (integer) 2 127.0.0.1:6379> lpush test c (integer) 3 127.0.0.1:6379> lrange test 0 -1 1) "c" 2) "b" 3) "a" 127.0.0.1:6379> lrem test 0 b (integer) 1 127.0.0.1:6379> lrange test 0 -1 1) "c" 2) "a" 127.0.0.1:6379>