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;
        });
    }
相关推荐
LucianaiB43 分钟前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
时序数据说1 小时前
时序数据库IoTDB在航空航天领域的解决方案
大数据·数据库·时序数据库·iotdb
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
AnsenZhu1 小时前
2025年Redis分片存储性能优化指南
数据库·redis·性能优化·分片
时间之城1 小时前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel
oydcm2 小时前
MySQL数据库概述
数据库·mysql
oioihoii2 小时前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23
带娃的IT创业者2 小时前
《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
数据库·人工智能
李菠菜3 小时前
非SpringBoot环境下Jedis集群操作Redis实战指南
java·redis
husterlichf3 小时前
MYSQL 常用数值函数 和 条件函数 详解
数据库·sql·mysql