redis 保存是否可以更快?

redis 常见用法之保存

           在java项目很多人都喜欢用spring-boot-starter-data-redis下的StringRedisTemplate操作redis,大多项目也用作为缓存,他们最常见的保存key value代码,如下:

stringRedisTemplate.opsForValue().set(key, value);

大家都知道redis上面的代码执行保存是同步的,速度并不是想像中的快。请看以下的测试:

redis测试环境

直连线上真实环境redis数据库 

redis当前版本及状态如下图:

1 测试1000条数据更新测试: 

同步是花了60.783秒,而使用异步时0.003秒,如下图:

2 测试10000条数据更新测试: 

同步是花了663.915秒,而使用异步时0.005秒,如下图:

从上面的测试结果可以看得出,redis同步与异步保存差距是多么的大。某些合适的环境可以建议使用异步保存,也算是提升项目整体性能一个技巧。

测试代码 

 @Test
    public  void testRedis() {


        long start= System.currentTimeMillis();
        System.out.println("test redis -----------begin");

        for(int i=0;i<10000;i++){
            redisService.set("test_key1","aa"+i);
        }
        System.out.println("test redis-----------end");

        long end= System.currentTimeMillis()-start;
        System.out.println("time = "+end);



         start= System.currentTimeMillis();
        System.out.println("test redis async-----------begin");

        for(int i=0;i<1000;i++){
            redisService.asyncSet("test_key1","aa"+i);
        }
        System.out.println("test redis async-----------end");

         end= System.currentTimeMillis()-start;
        System.out.println("async time = "+end);



    }


//同步更新
public void set(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);

    }

//异步更新
    public CompletableFuture<Void> asyncSet(String key, String value) {
        return CompletableFuture.supplyAsync(() -> {
            stringRedisTemplate.execute((RedisCallback<Object>) connection -> {
                connection.set(key.getBytes(), value.getBytes());
                return null;
            });
            return null;
        });
    }

 

相关推荐

  1. ES 索引关闭source后是否可以新?

    2024-03-31 05:16:08       55 阅读
  2. redis为什么

    2024-03-31 05:16:08       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 05:16:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 05:16:08       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 05:16:08       82 阅读
  4. Python语言-面向对象

    2024-03-31 05:16:08       91 阅读

热门阅读

  1. 智能写手ChatGPT:学术论文写作新视野

    2024-03-31 05:16:08       42 阅读
  2. React学习总结(三)之React探索

    2024-03-31 05:16:08       36 阅读
  3. 【算法】基数排序

    2024-03-31 05:16:08       38 阅读
  4. Git命令使用

    2024-03-31 05:16:08       37 阅读
  5. 服务器不支持PUT和DELETE请求处理

    2024-03-31 05:16:08       39 阅读