Redis缓存

1.为什么要用缓存?

生活事例

小明是一家饭店的厨师,在饭店发展的初期,因为顾客不多因此小明生活得很悠闲,上班打卡玩手机,下班打卡逛夜店,生活过得十分惬意,但随着饭店的日益发展,顾客也越来越多了,因此出现了高峰期顾客长时间等待的情况,满意度也大幅下降。

因此老板就找到了小明,询问了相关的情况,小明说在高峰期自己要洗菜、切菜和炒菜,每个人的工作量都很大所以就忙不过了,因此上菜就比较慢了。

于是精明的老板就想到了一个好主意,他让厨师在平常不忙的时候把顾客长点的菜提前做好,然后妥善的保存起来,在高峰期直接拿出来热一下就好了,这样一来,果然工作效率就大大提升了,每到高峰期也能轻松应对了。

缓存定义

缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据

程序中的缓存

对于程序来说,当没有使用缓存时,程序的调用流程是这样的:
在这里插入图片描述

但随着业务的发展,公司的框架慢慢变成了多个程序调用一个数据库的情况了:
在这里插入图片描述
这是多部分公司的普遍的架构流程图,因此当公司业务发展到一定规模之后,最可能出现性能瓶颈的地方就是数据库。

数据库的资源同时也是程序中最昂贵的资源,因此为了防止数据库被过度的浪费,我们就需要给它雇一个“助理”了,这个助理就是缓存系统。

加入缓存后,程序的交互流程如下图所示:
在这里插入图片描述

这样改造之后,所有的程序不会直接调用数据库,而是会先调用缓存,当缓存中有数据时会直接返回,当缓存中没有数据时才去查询数据库,这样就大大的降低了数据库的压力,并加速了程序的响应速度。

缓存优点

相比于数据库而言,缓存的操作性能更高,缓存性能高的主要原因有以下几个:

  1. 缓存一般都是 key-value查询数据的,因为不像数据库一样还有查询的条件等因素,所以查询的性能一般会比数据库高;
  2. 缓存的数据是存储在内存中的,而数据库的数据是存储在磁盘中的,因为内存的操作性能远远大于磁盘,因此缓存的查询效率会高很多;
  3. 缓存更容易做分布式部署(当一台服务器变成多台相连的服务器集群),而数据库一般比较难实现分布式部署,因此缓存的负载和性能更容易平行扩展和增加。

2.缓存分类

缓存大致可以分为两大类:

  • 本地缓存
  • 分布式缓存

本地缓存

本地缓存也叫单机缓存,也就是说可以应用在单机环境下的缓存。所谓的单机环境是指,将服务部署到一台服务器上,如下图所示:

在这里插入图片描述

举个例子
本地缓存相当于每家企业的公司规定一样,不同的公司规定也是不同的,比如上班时间,不同的公司上班时间规定也是不同的,对于企事业单位来说一般要求9:00-17:00上班,而对于酒吧来说,这个时间就完全不适合了。

所以,本地缓存的特征是只适用于当前系统

分布式缓存

分布式缓存是指可以应用在分布式系统中的缓存。所谓的分布式系统是指将一套服务器部署到多台服务器,并且通过负载分发将用户的请求按照一定的规则分发到不同服务器,如下图所示:
在这里插入图片描述

举个例子

分布式缓存相当于适用于所有公司的规定,比如无论是任何公司都不能偷税漏税,不能做违反法律的事情,这种情况就和分布式缓存很像,适用于所有的系统。

比如我们在分布式系统中的服务器A中存储了一个缓存key=laowang,那么在服务器B中也可以读取到 key=laowang 的数据,这样情况就是分布式缓存的作用。

3.常见缓存使用

本地缓存的常见使用: Spring Cache、MyBatis的缓存等。

分布式缓存的常见使用: Redis 和 Memcached。

本地缓存: Spring Cache

在Spring Boot项目,可以直接使用Spring 的内置Cache(本地缓存),只需要完成以下三个步骤就可以正常使用了:

  1. 开启缓存
  2. 操作缓存
  3. 调用缓存

开启缓存
在Spring Boot的启动类上添加如下代码,开启缓存:

@SpringBootApplication
@Enablecaching #开启缓存功能
public class BiteApplication {
   
	public static void main(String[] args) {
   
		SpringApplication.run(BiteApplication.class,args );
	}
}

操作缓存

@service
public class UserService {
   
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值