Redis之管道Pipelined使用姿势

redis管道技术,可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应,这种技术可以很方便的支持我们的批量请求,下面简单介绍下如何使用RedisTemplate来使用管道

I. 基本使用

  1. 配置
    我们使用SpringBoot 2.2.1.RELEASE来搭建项目环境,直接在pom.xml中添加redis依赖

    org.springframework.boot
    spring-boot-starter-data-redis

    如果我们的redis是默认配置,则可以不额外添加任何配置;也可以直接在application.yml配置中,如下
    spring:
    redis:
    host: 127.0.0.1
    port: 6379
    password:
  2. 使用姿势
    这里我们主要借助org.springframework.data.redis.core.RedisTemplate#executePipelined(org.springframework.data.redis.core.RedisCallback<?>),如下

@Component
public class PipelineBean {

private RedisTemplate<String, String> redisTemplate;

public PipelineBean(RedisTemplate<String, String> redisTemplate) {
    this.redisTemplate = redisTemplate;
}


public void counter(String prefix, String key, String target) {
    // 请注意,返回的结果与内部的redis操作顺序是匹配的
    List<Object> res = redisTemplate.executePipelined(new RedisCallback<Long>() {
        @Override
        public Long doInRedis(RedisConnection redisConnection) throws DataAccessException {
            String mapKey = prefix + "_mp_" + key;
            String cntKey = prefix + "_cnt_" + target;

            redisConnection.openPipeline();
            redisConnection.incr(mapKey.getBytes());
            redisConnection.incr(cntKey.getBytes());
            return null;
        }
    });
    System.out.println(res);
}

}
上面的使用中,有几个注意事项

redisConnection.openPipeline(); 开启管道
返回结果为列表,内部第一个redis操作,对应的返回结果塞在列表的下标0;依次…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值