• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

Spring Boot 高级篇–Redis(9):Redis之管道Pipelined使用姿势

Redis winrains 来源:一灰灰Blog 5个月前 (04-13) 177次浏览

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

I. 基本使用

1. 配置

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

如果我们的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;依次…

II. 其他

0. 项目

作者:一灰灰Blog

来源:http://spring.hhui.top/spring-blog/2020/04/11/200411-SpringBoot%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8BRedis%E4%B9%8B%E7%AE%A1%E9%81%93Pipelined%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/


版权声明:文末如注明作者和来源,则表示本文系转载,版权为原作者所有 | 本文如有侵权,请及时联系,承诺在收到消息后第一时间删除 | 如转载本文,请注明原文链接。
喜欢 (2)