Redis缓存与从数据取数据性能比较

本文探讨了使用Redis缓存的优势,如提高性能、降低数据库负载和减少响应时间,以及Redis的工作原理,包括内存存储、缓存淘汰策略和持久化。通过实测对比,展示了利用Redis缓存能显著加快数据读取速度。
摘要由CSDN通过智能技术生成

Redis缓存与从数据取数据性能比较

为什么使用Redis

使用Redis缓存数据有多个原因,包括提高性能、降低数据库负载、减少响应时间和支持临时数据存储等。以下是一些主要原因以及Redis缓存的工作原理和好处:

1. 提高性能: 数据库查询通常是一个相对较慢的操作,特别是当数据库中的数据量很大时。通过将常用的数据存储在Redis缓存中,可以大大提高读取数据的速度,因为Redis以内存为基础,读写速度非常快。

2. 降低数据库负载: 当大量请求同时访问数据库时,数据库服务器的负载会增加。通过使用Redis缓存,可以减少对数据库的频繁查询,从而减轻数据库服务器的负载,提高其稳定性和可扩展性。

3. 减少响应时间: 缓存可以减少客户端请求的响应时间。当需要访问的数据已经在Redis缓存中存在时,不必执行昂贵的数据库查询,直接从缓存中获取数据,这可以显著减少响应时间。

4. 支持临时数据存储: Redis支持设置键的过期时间,这意味着您可以将数据存储在Redis中,并为其设置一个超时时间。这对于存储临时性数据非常有用,如会话数据、验证码等。一旦数据不再需要,它会自动从Redis中移除,不需要手动清理。

Redis的工作原理:

Redis是一个内存键值存储数据库,它将数据存储在内存中,因此读取和写入数据非常快速。以下是Redis的基本工作原理:

  1. 数据存储: Redis使用键值对的方式存储数据,每个键都关联一个特定的值。这些值可以是字符串、列表、集合、哈希表等。

  2. 内存存储: Redis将数据存储在内存中,这使得数据的读取和写入非常快速。但要注意,由于内存是有限的,因此Redis适用于相对较小的数据集。为了处理更大的数据集,可以使用Redis的持久化机制将数据定期写入磁盘。

  3. 缓存淘汰策略: 当Redis的内存用尽时,它可以根据一些缓存淘汰策略来自动清理不再使用的数据,以腾出内存空间。这可以防止内存溢出。

  4. 持久化: Redis支持持久化,可以将数据保存到磁盘,以便在服务器重启时恢复数据。有两种主要的持久化方式:RDB快照和AOF日志。

数据测试

单独从数据取8000左右条数据

单独从数据库读取

接口代码

@GetMapping("/get")
    public BaseResponse<List<Sentences>> get(){
        System.out.println(UserHolder.getValue());
        return ResultUtils.success(sentencesService.list());
    }

直接读取的速度如图

在这里插入图片描述

利用Redis读取

接口逻辑:如果是首次获取那么从数据库获取,从数据库获取后会把数据返回给前端,同时会把数据存储到Redis中进行缓存。而如果Redis中有数据的话,那么就会直接从Redis中提取数据,并且返回给前端。

接口代码:

 @GetMapping("/getByRedis")
    public BaseResponse<List<Sentences>> getByRedis(){
        System.out.println(UserHolder.getValue());
        String sentencesConstant = "test:redis:sentences";
        List<Sentences> sentencesList = (List<Sentences>)redisTemplate.opsForValue().get(sentencesConstant);
        if(sentencesList == null || BeanUtil.isEmpty(sentencesList)){
            List<Sentences> result = sentencesService.list();
            redisTemplate.opsForValue().set(sentencesConstant,result,30, TimeUnit.MINUTES);
            return ResultUtils.success(result);
        }
        redisTemplate.expire(sentencesConstant,30,TimeUnit.MINUTES);
        return ResultUtils.success(sentencesList);
    }

第一次请求所用时间

在这里插入图片描述

第二、三次

在这里插入图片描述
在这里插入图片描述

这样子利用Redis缓存速度确实会快很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xwhking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值