Redis管道技术以及SpringBoot中应用

redis 管道

Redis是基于请求/响应协议的TCP服务,在客户端向服务器发送一个查询请求后,需要监听Socket的返回,该监听过程一直阻塞,知道服务器有结果返回,由于Redis集群是部署在多个服务器上的,所以Redis请求/响应模型在每次请求时都要跨网络在不同的服务器之间传输数据,这样每次查询都存在一定的网络延迟。由于服务器一般采用多线程处理业务,并且内存操作效率很高。所以一次请求延时20MS,则多次请求的网络延迟会不断累加。也就是说,在分布式环境下,Redis的瓶颈主要体现在网络延迟上。
在这里插入图片描述


Redis的管道技术指在服务端未响应时,客户端可以继续向服务器发送请求,并最终一次性读取所有服务端的响应。管道技术能够减少客户端和服务器交互的次数,将客户端的请求批量发送给服务端,服务端针对批量请求分别查询并统一回复,能显著提高Redis的性能。
在这里插入图片描述

Redis管道技术基于SpringBoot的使用如下:

    void executePipelined() {
        final List<Object> list = redisTemplate.executePipelined(new RedisCallback<Object>() {
            @Nullable
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                //1 打开 Pipline
                connection.openPipeline();
                //2 执行批量操作
                for (int i = 0; i < 1000; i++) {
                    String key = "key_" + i;
                    String value = "value_" + i;
                    // connection.set(key.getBytes(StandardCharsets.UTF_8), value.getBytes(StandardCharsets.UTF_8));
                    connection.get(key.getBytes(StandardCharsets.UTF_8));
                }
                //3 返回结果,这里返回null
                return null;
                // 4 redisTemplate将会把最终结果汇总到外层的list中。
            }
        });
        //5 查看管道批量操作的返回结果
        for (Object dateTime : list) {
            System.out.println(dateTime);
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值