SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

【前言】

        今天在优化通知平台的路由部分时发现每次当路由初始化到Redis时异常慢,早就听闻Pipeline是redis批量操作的利器,正好这次用Pipeline进行优化;

【整合Redis实战】

         一、原理分析

                1、单个命令操作

                2、Pipeline批量操作                 

         二、相关代码                

    //批量操作
    @RequestMapping(value = "/add/pipeline", method = RequestMethod.GET)
    public void addPipeline() {
        strRedisTemplate.executePipelined(new RedisCallback<String>() {
            @Override
            public String doInRedis(RedisConnection connection) throws DataAccessException {
                for (int i = 0; i < 100; i++) {
                    connection.set(("pipel:" + i).getBytes(), "123".getBytes());
                }
                return null;
            }
        });
    }

    //单个操作
    @RequestMapping(value = "/add/single", method = RequestMethod.GET)
    public void addSingle() {
        for (int i = 0; i < 100; i++) {
            strRedisTemplate.opsForValue().set("single:" + i, "123");
        }
    }

         三、效果对比

                1、单个命令操作(100次与Redis服务端交互)---多次测试平均值

                2、Pipeline命令操作耗时(1次与Redis服务端的交互)---多次测试的平均值

                3、实现相同的效果:Redis存储100个Key

                4、性能提升了 41066/336=122倍 (具体和系统代码与Redis服务器间的网络快慢有关,一般网络越差,操作的Redis的个数越多效果越明显)

        五、项目地址及代码版本

               1、地址:https://github.com/dangnianchuntian/springboot

               2、代码版本:1.0.0-Release           

【总结】

         1、不断发现系统中的隐藏性能问题,去优化,快速提升的有效的路径;

         2、不断积累,扩展知识面,才能发现更多更深层次的问题。

发布了291 篇原创文章 · 获赞 2657 · 访问量 536万+

猜你喜欢

转载自blog.csdn.net/u012829124/article/details/90646951