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

news2024/12/24 0:15:05

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缓存速度确实会快很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APP推荐:安卓系统的开屏广告自动跳过助手

今天给大家推荐一款安卓系统的开屏广告自动跳过助手&#xff0c;感兴趣的朋友可以下载试试看&#xff01; 一、软件简介 安卓系统的开屏广告自动跳过助手 自动跳过软件的实现&#xff0c;一般都是基于安卓的Accessibility“无障碍服务”实现。开启了无障碍服务的软件&#xf…

【大数据开发技术】实验03-Hadoop读取文件

文章目录 Hadoop读取文件一、实验目标二、实验要求三、实验内容四、实验步骤 Hadoop读取文件 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理掌握HDFS的API使用方法掌握通过URL类读取HDFS上的文件内容的方法掌握FileSystem读取HDFS上文件内容的方法 二、…

【STM32学习】I2C通信协议 | OLED屏

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《STM32学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 今天需要将代码烧录到开发板中&#xff0c;本喵默认大家都会创建工程&#xff0c;以及进行基本的…

黄金代理如何选择平台?窍门在这儿

作为一个黄金代理平台&#xff0c;什么才是最重要的呢&#xff1f;笔者认为以下三个方面是最重要的&#xff0c;一个是资质&#xff0c;第二个是口碑&#xff0c;第三个是平台的软件。这三者是成为黄金代理要考虑的最重要的三个因素&#xff0c;也直接关系大黄金代理的职业生涯…

大模型股票交易-挖掘新闻和情绪价值

埃隆马斯克 (Elon Musk) 的星际飞船于 2023 年 4 月 20 日升空后爆炸。想象一下&#xff0c;当时您正在观察股市&#xff0c;突然出现新闻&#xff0c;您会如何交易 TSLA 股票&#xff1f; 我希望您不要与我争论&#xff0c;您作为交易者&#xff08;而不是投资者&#xff09;要…

基于Kubernetes的Serverless PaaS稳定性建设万字总结

作者&#xff1a;许成铭&#xff08;竞霄&#xff09; 数字经济的今天&#xff0c;云计算俨然已经作为基础设施融入到人们的日常生活中&#xff0c;稳定性作为云产品的基本要求&#xff0c;研发人员的技术底线&#xff0c;其不仅仅是文档里承诺的几个九的 SLA 数字&#xff0c…

【Redis】第6讲 Redis的启动和关闭

前端运行方式 进入/usr/local/bin目录下查看是否有redis-server rootsue-virtual-machine:/opt/redis-5.0.4# cd /usr/local/bin/ 然后启动redis-server服务器 rootsue-virtual-machine:/usr/local/bin# redis-server 后台运行方式 前端运行的话&#xff0c;界面中输入任何…

MTR 网络连通性测试工具 基础入门 整理

MTR MTR的全称是 my traceroute&#xff0c;是一个集合了 ping 与 traceroute 功能的网络诊断工具&#xff0c;广泛应用于链路测试。相对于 traceroute 只会做一次链路跟踪测试&#xff0c;mtr会对链路上的相关节点做持续探测并给出相应的统计信息。因此&#xff0c;mtr能避免…

计算机网络 实验二 交换机的基本配置

实验二 交换机的基本配置 实验目的 • 掌握交换机的配置方式及切换命令&#xff1b; • 掌握交换机端口的基本配置&#xff1b; • 掌握交换机mac地址的查看与管理方法。 实验设备 以太网交换机一台服务器一台PC机五台配置电缆、网线若干 网络拓扑及IP地址分配 给计算…

AI写作生成器,文章生成器

AI写作生成器&#xff0c;也叫文章生成器。你是否常常为了创作大量文案而感到疲惫不堪&#xff1f;是否曾经为了一篇好的博客、一个广告文案或一封邮件而煞费苦心&#xff1f;AI写作生成器可以帮助你轻松解决这些问题&#xff0c;让文案创作变得如丝般顺滑。 147GPT批量文章生成…

Premiere Pro切换中文

安装了Premiere Pro突然发现界面语言是英文版的&#xff0c;首选项里也没有UI语言切换选项&#xff0c;怎么在不重装的情况下&#xff0c;将英文版Premiere Pro怎么切换成中文&#xff1f; 1、打开安装好的Premiere Pro&#xff0c;可以看到界面语言是英文版的; 2、进入pr后,新…

【Java 基础篇】Java网络编程实战:P2P文件共享详解

Java网络编程是现代软件开发中不可或缺的一部分&#xff0c;因为它允许不同计算机之间的数据传输和通信。在本篇博客中&#xff0c;我们将深入探讨Java中的P2P文件共享&#xff0c;包括什么是P2P文件共享、如何实现它以及一些相关的重要概念。 什么是P2P文件共享&#xff1f; …

Socket编程基础(1)

目录 预备知识 socket通信的本质 认识TCP协议和UDP协议 网络字节序 socket编程流程 socket编程时常见的函数 服务端绑定 整数IP和字符串IP 客户端套接字的创建和绑定 预备知识 理解源IP和目的IP 源IP指的是发送数据包的主机的IP地址&#xff0c;目的IP指的是接收数据包…

猫头虎博主的AI魔法课:一起探索CSDN AI工具集的奥秘!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Merge之后,还没有Push,如何回滚

Merge之后&#xff0c;还没有Push&#xff0c;如何回滚 Merge之后&#xff0c;还没有Push&#xff0c;如何回滚 1&#xff1a;代码操作&#xff1a; 1&#xff1a;git log 查看git执行历史记录 GIT所有的执行记录会以倒叙呈现&#xff1b;最上面的就是需要回滚的merge序列号&a…

凹凸贴图和法线贴图的区别

1、什么是凹凸贴图 凹凸贴图&#xff08;bump mapping&#xff09;是一种计算机图形学中的渲染技术&#xff0c;用于在给定的表面上模拟微小的凹凸纹理。通过在表面法线方向上微调每个像素的光照值&#xff0c;可以给平滑的表面增加视觉上的凹凸感。 在凹凸贴图中&#xff0c;每…

第一百五十回 自定义组件综合实例:游戏摇杆一

文章目录 概念介绍实现方法示例代码我们在上一章回中介绍了自定义组件相关的内容,本章回中将综合使用这些内容 自定义游戏摇杆组件.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们介绍的游戏摇杆就是一个内层的小圆嵌套一个外层的大圆,大圆的位置不变,小圆只能在大圆…

读取jsonArray文件并转换为java对象工具类

json文件中存放jsonArray&#xff0c;将其读取出来并转换为java对象&#xff0c;转换的对象需要根据传入的对象动态转换&#xff0c;工具类编写如下&#xff1a; import lombok.extern.slf4j.Slf4j; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOEx…

接口自动化测试TestNG框架环境搭建

TestNG是什么&#xff1f; TestNG是一个功能强大的测试框架&#xff0c;是Junit的一个增强版本&#xff0c;Junit在使用多年之前&#xff0c;TestNG才生效存在。NG 代表“下一代”。 TestNG框架提供了以下功能和解答我们的问题&#xff1a;“为什么我们需要TestNG”&#xff…