Redis、Spring Cache 、HttpClient基础

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

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

posted @ 2025-07-02 00:48  waterme  阅读(8)  评论(0)    收藏  举报