先用lrange key 1 10 获取到内容 再用 ltrim key 10 -1(到-1表示开始到最后)保留10 到最后的所有数据,也就是删除1-10的数据。
要保证数据取和删的一致性:
//取16个元素
List<String> list= redisService.lrange(GlobalConfig.HEART_BEAT_LOGIC, 0, 16);
//删除下标从0到15的元素,保留下标从16开始以后的元素
redisService.ltrim(GlobalConfig.HEART_BEAT_LOGIC,heartBeatLogicInfoList.size(),-1);
这样批量取数据,可以解决redis缓存的高并发,很有用,不过要兼顾这种批量处理所对应的逻辑处理给服务器造成的压力。
如果可以最好还是使用多线程,虽然效率没有批量取快,但是安全,万一批量处理一条数据报错会影响其他数据,而线程的话一条数据有误丢掉就可以了,不至于影响其他数据,独立线程跑会相对安全些,当然具体业务具体分析。