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;
        });
    }
相关推荐
IDC02_FEIYA1 小时前
SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)
数据库·windows
辞砚技术录1 小时前
MySQL面试题——联合索引
数据库·面试
萧曵 丶2 小时前
MySQL 主键不推荐使用 UUID 的深层原因
数据库·mysql·索引
小北方城市网2 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
毕设十刻2 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
ohoy2 小时前
RedisTemplate 使用之Zset
java·开发语言·redis
独断万古他化2 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
likuolei2 小时前
Spring AI框架完整指南
人工智能·python·spring
梵得儿SHI2 小时前
(第四篇)Spring AI 核心技术攻坚:多轮对话与记忆机制,打造有上下文的 AI
java·人工智能·spring·springai生态·上下文丢失问题·三类记忆·智能客服实战案
希忘auto2 小时前
SpringBoot之统一数据返回格式
java·spring