redis使用Pipeline进行批量操作

redis | 2020-02-14 14:17:28

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;
    }

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号