redis 保存是否可以更快?

redis 常见用法之保存

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

java 复制代码
stringRedisTemplate.opsForValue().set(key, value);

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

redis测试环境

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

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

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

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

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

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

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

测试代码

java 复制代码
 @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;
        });
    }
相关推荐
360智汇云39 分钟前
Valkey 9.1上线:从Redis兼容到AI数据能力探索
数据库
标致的自行车1 小时前
Entity Framework之问题收集
jvm·数据库·oracle
啵啵鱼爱吃小猫咪1 小时前
Franka机械臂安装实时内核
数据库·postgresql
今天也是元气满满的一天呢2 小时前
从单机架构到负载均衡的互联网架构全流程
数据库·系统架构
SelectDB2 小时前
快手 AB 场景提速 145 倍,从 Spark 到 Apache Doris 的加速实践
数据库·spark·开源
SelectDB2 小时前
阶跃星辰 Agent 可观测实践:为什么 Trace 数据底座选择 SelectDB?
大数据·数据库·agent
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第156题】【06_Spring篇】第16题:Spring 用到了哪些设计模式?
java·spring·设计模式·代理模式·工厂模式
冷静的楼房2 小时前
使用ThreadPool发起同步的调用
数据库
一个天蝎座 白勺 程序猿2 小时前
自动SQL优化实战|吃透调优接口+报告配置+统计+索引全流程落地
数据库·sql·sql优化
TDengine (老段)2 小时前
# TDengine TMQ 最佳实践 — 可靠消费、容错与监控
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据