1.redis list 批量push
redis 批量push很简单,因为lpush名的参数,是可变长参数,只要push时放入多个参数即可。
LPUSH key value [value ...]
#将一个或多个值 value 插入到列表 key 的表头
2.redis list 批量pop
RPOP key
#移除并返回列表 key 的尾元素。
rpop命令只能每次操作一个命令
这个时候就要用到 redis pipeline 实现批量操作。
2.1.redis pipeline
redis pipeline(管道机制)是redis批量提交的一种方式,也就是把多个命令操作建立一次连接发给redis去执行,在性能方面会比循环的单次提交会好很多。这个mysql executeBatch很相似。
2.1.redis pipeline批量操作案例代码
/**
* 批量消费redis消息
* @param key redis KEY
* @param batchSize 消费的数量
* @return
*/
public List<Object> batchGetCallBackMessge(String key,int batchSize){
List<Object> results = redisTemplate.executePipelined(
new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) throws DataAccessException {
for(int i=0;i<batchSize;i++){
connection.rPop(key.getBytes());
}
return null;
}
}
);
return results;
}