缓存技术思考
迪丽瓦拉
2025-05-28 22:21:49
0

目录

1.概述

2.常用缓存

2.1本地缓存

2.2集中缓存

3.缓存相关概念

4.方案应用

下面以登录验证码为例来看下:


1.概述

性能,扛压,高并发,提升用户体验..等等这些,都离不开缓存。

都知道,内存读写速度远远高于磁盘,传统数据库如mysql是将数据落地在磁盘上的。所以当我们前端用户发起数据请求,到后端去处理查询数据库并返回。当短时间内大量请求压过来时,我们直接读取数据库,mysql数据库的压力会非常大。如果将部分数据提前调到内存中,cpu就可以快速的读取数据返回给用户。

2.常用缓存

2.1本地缓存

建议选用支持spring cache规范的缓存实现,如ehcache、jetcache。或者用caffine、guavacache等。我们项目中用的是jetcache

2.2集中缓存

redis.

3.缓存相关概念

1.支持数据淘汰和容量限制

2.过期时间存储与设置

3.redis的持久化

4.方案应用

1.短信验证码

2.登录验证码

3.token

4.redis生成全局ID

5.阅读量计数器

6.等等,一些高频访问,且变更小的视图数据。

下面以登录验证码为例来看下:

刷新页面,进行登录验证码请求

发起请求

封装验证码并返回

此处验证码值12作为value,以固定前缀+uuid作为key缓存如redis中,有效期30分钟

返回uuid,和图片的base64编码给前端。

查看redis中的存储

前端用户输入12并登录,此处以springsecurity+oauth2方式登录,将12以code值放入请求头中登入。(登录详情就不赘述了),看下验证码校验部分

这里拿到前端传来的key就是uuid 和code就是12。

然后从redis中通过固定前缀+uuid作为key拿到redis中已经存的值就是上一步存的。

进行校验

清除redis中该key所存储的值。

这里用uuid来区分不同的用户登录验证码。

相关内容