【字节跳动】实锤!字节豆包后台长期非法驻留探针,持续入侵个人iPhone设备、恶意占用算力扰民(附完整系统日志证据)
2026/6/8 23:50:00
当zset的score有较多相同值,通过ZREVRANGEBYSCORE等命令查询时,可能出现死循环,查询不完的情况。
每次查询完一页后,计算ZREVRANGEBYSCORE查询的最小值,判断和前一个值是否相等,
这种方式,offset越大复杂度越高,O(offset + limit)。
若使用时间戳作为分数,业务上同一时间戳有很多并发,那么说明该分数并不适合,可以构造唯一分数来解决:
score = 秒级ts *1e6 + count使用offset虽然简单,但性能可能会有所下降,可以分两次查询:
上一次查询结果:
(last_ts, last_member)下次查询:
(ts < last_ts) OR (ts == last_ts AND member < last_member)那么命令:
ZRANGEBYSCORE key last_ts last_ts // 查到所有分数相同的,当数量 n < page_size 时 ZREVRANGEBYSCORE key (last_ts -inf LIMIT 0 (page_size - n) // 再查询分数更小的复杂度有点高,多了来回的网络开销。