Redis

基于内存的key-value的结构数据库,读写性能高,常用于存储热点数据(短时间大量访问)

MySQL则是基于磁盘的二维表结构的数据库。

Redis的使用

  1. Redis中没有用户的概念,只有密码
  2. 不同数据库中的数据隔离,初始划分了16个数据库
  3. key为string类型,value有五种数据类型:String、hash(类比 hashmap)、list(类比Linkedlist)、set(类比hashset)、sorted set/zset(有序)

Java中使用Redis

  1. 导入坐标
  2. 配置Redis数据源(host、port、password、DB(名称))
  3. 编写配置类:通过配置类创建RedisTemplate对象
  4. 通过RedisTemplate对象操作Redis

注意事项

  1. java中的String != Redis中的String
  2. Spring框架中的Spring Data Redis将java对象序列化为Redis中的String再存储,所以通常我们要设置序列化器,在配置类中

应用

菜品数据在数据库中短时间大量用户访问 => 数据库过载,图片加载过慢 => 引入Redis解决,商品数据用Redis存储在缓存中

响应时间的瓶颈大多在DB查询

引入Redis后出现的问题:

  1. 数据不一致:DB数据库中数据修改了,但缓存中的数据没变。

    解决方案:数据库数据变动 => 清理缓存
  2. 用户端查询与管理端修改数据同时来,他们是一个线程吗?//TODO

结果

菜品查询速度:40ms => 10ms

Spring Cache 缓存框架

目的:简化缓存代码,用注解来实现缓存的增删。

Spring Cache 是抽象的接口,他具体的实现有Redis、Caffeine、EHCache

使用

  1. 导入坐标
  2. 导入Redis Java客户端(告诉Spring Cache用哪个实现)

常用注解

  1. @Enable Caching:标注在启动类上,开启缓存注解功能
  2. @Cacheable:标注在方法上,方法执行前查询缓存数据,有则取,无则查DB后再方
  3. @CachePut:将方法返回值放入缓存(只放)
  4. @CacheEvict:删除缓存

HttpClient

HttpClient:用于服务器端(Java后端)发生http请求

使用步骤:

  1. 创建HttpClient对象
  2. 创建Http请求对象(put or post)
  3. 调用HttpClient中的execute方法发送请求

Tips

在设计数据库表时,常常设计一些冗余字段(不易更改)来提高查询速度,减少多表联查。

Redis、Spring Cache 、HttpClient基础的更多相关文章

  1. SpringBoot集成redis + spring cache

    Spring Cache集成redis的运行原理: Spring缓存抽象模块通过CacheManager来创建.管理实际缓存组件,当SpringBoot应用程序引入spring-boot-starte ...

  2. Spring Boot(八)集成Spring Cache 和 Redis

    在Spring Boot中添加spring-boot-starter-data-redis依赖: <dependency> <groupId>org.springframewo ...

  3. Spring Boot (24) 使用Spring Cache集成Redis

    Spring 3.1引入了基于注解(annotation)的缓存(cache)技术,它本质不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的个助攻annotatio ...

  4. 【快学SpringBoot】Spring Cache+Redis实现高可用缓存解决方案

    前言 之前已经写过一篇文章介绍SpringBoot整合Spring Cache,SpringBoot默认使用的是ConcurrentMapCacheManager,在实际项目中,我们需要一个高可用的. ...

  5. SpringBoot 结合 Spring Cache 操作 Redis 实现数据缓存

    系统环境: Redis 版本:5.0.7 SpringBoot 版本:2.2.2.RELEASE 参考地址: Redus 官方网址:https://redis.io/ 博文示例项目 Github 地址 ...

  6. Spring Cache For Redis

    一.概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的. 常用的缓存数据库: Redis   使用内存存储(in-memory)的非关系数据库,字符串.列 ...

  7. 【Spring】17、spring cache 与redis缓存整合

    spring cache,基本能够满足一般应用对缓存的需求,但现实总是很复杂,当你的用户量上去或者性能跟不上,总需要进行扩展,这个时候你或许对其提供的内存缓存不满意了,因为其不支持高可用性,也不具备持 ...

  8. 基于Redis的Spring cache 缓存介绍

    目录 Cache API及默认提供的实现 demo 依赖包安装 定义实体类.服务类和相关配置文件 Cache注解 启用Cache注解 @CachePut @CacheEvict @Cacheable ...

  9. JAVA 框架 Spring Cache For Redis.

    一.概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的. 常用的缓存数据库: Redis   使用内存存储(in-memory)的非关系数据库,字符串.列 ...

  10. springboot整合spring @Cache和Redis

    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10779450.html spring基于注解的缓存 对于缓存声明,spring的缓存提供了一组java注解: ...

随机推荐

  1. DevOps常用工具网址

    Linux基础和命令: shell语法查询: http://www.linux6.comhttps://www.tutorialspoint.com/linux_admin/index.htm 正则表 ...

  2. Python复制单个文件为多个脚本

    编写背景: 由于线上用户反馈媒体添加页加载时间很长,猜测是由于本地视频/图片数量过多引起,于是编写此脚本以便快速生成大量测试视频 代码如下: # coding=utf-8 import os impo ...

  3. ADTF: 助力自动驾驶系统开发的强大工具箱!

    在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求.然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案. 康谋ADTF正是 ...

  4. 国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!

    今日凌晨,通义千问团队正式开源了 Qwen3 大模型,并且一口气发布了 8 个型号,其中包括 0.6B.1.7B.4B.8B.14B.32B 以及 30B-A3B 和 235B-A22B,使用者可以根 ...

  5. SpringMVC框架第一天

    目录 SpringMVC的基本概念 三层架构和MVC 三层架构 MVC模型 MVC概述 SpringMVC是什么 SpringMVC在三层架构的位置 SpringMVC的优势 SpringMVC的入门 ...

  6. 【工具】VS Code Counter|除了Gitstats之外的Github一键统计代码行数工具

    需求: 1)被要求统计代码行数: 2)不想打开Linux,懒得下载Windows版本GitStats: 3)打开了Linux但也不记得find命令行怎么用: 4)打开了Linux,装好了Gitstat ...

  7. PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)

    1.简介 上一篇宏哥主要讲解和介绍了如何获取PC端应用程序窗口信息和如何连接窗口对其进行操作的常用的几种方法.今天宏哥接着讲解和分享一下窗口的基本操作:最大化.最小化.恢复正常.关闭窗口.获取窗口状态 ...

  8. SQL 强化练习 (八)

    继续练习写sql, 不能停下来. 今天还额外对 Excel 拼接 sql 语句做了一个代码实现, 逻辑是蛮简单的, 发现其实很多东西都是蛮简单的, 只要一点点去做, 明白逻辑过后, 慢慢去调试, 都是 ...

  9. Web前端入门第 50 问:CSS 内容溢出怎么处理?

    溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况. 正常情况内容溢出应该换行自动撑开盒子大小,但某 ...

  10. SpringBoot2 可以使用 SolonMCP 开发 MCP(江湖救急)

    MCP 官方的 java-sdk 目前要求 java17+(直接使用 sdk 也比较复杂).Spring-AI(有 MCP 内容)也是要求 java17+. SpringBoot2 怎么办? 使用 S ...