如何使用Jedis的xdel方法批量删除Redis Stream ID并解决参数报错
Jedis批量删除Redis Stream ID参数说明
报错根因:xdel方法的第二个参数为StreamEntryID类型的可变长参数,你传入List或者Stream类型的实例时,不符合方法的参数类型要求,就会触发类型不匹配的报错。
以下是不同场景下的正确写法:
- 单独传入多个ID的写法:
// 直接传入多个StreamEntryID对象即可 jedis.xdel("stream_key", new StreamEntryID("1690000000000-0"), new StreamEntryID("1690000000001-0"));
- 已有
List<StreamEntryID>集合的写法:
List<StreamEntryID> toDelIds = new ArrayList<>(); // 业务逻辑填充待删除ID // 把List转为数组传入 jedis.xdel("stream_key", toDelIds.toArray(new StreamEntryID[0]));
- 持有
Stream<StreamEntryID>流的写法:
Stream<StreamEntryID> idStream = // 你的流对象 // 直接把流转为数组传入 jedis.xdel("stream_key", idStream.toArray(StreamEntryID[]::new));
补充说明:Java的可变长参数底层是数组实现,所以只有独立的多个同类型参数、或者对应类型的数组可以被方法接收,集合、流类型都需要先转换为数组再传入。
内容的提问来源于stack exchange,提问作者בני
相关产品推荐
相关产品推荐

