网站开发技术可行性分析,微信公众号和小程序开发需要涉及,苏州网站建设空间,加强部门网站建设工作文章目录 一、mall开源项目1.1 来源1.2 项目转移1.3 项目克隆 二、Redis 非关系型数据库2.1 Redis简介2.2 分布式后端项目的使用流程2.3 分布式后端项目的使用场景2.4 常见的缓存问题 三、源码解析3.1 集成与配置3.1.1 导入依赖3.1.2 添加配置3.1.3 全局跨域配置 3.2 Redis测试… 文章目录 一、mall开源项目1.1 来源1.2 项目转移1.3 项目克隆 二、Redis 非关系型数据库2.1 Redis简介2.2 分布式后端项目的使用流程2.3 分布式后端项目的使用场景2.4 常见的缓存问题 三、源码解析3.1 集成与配置3.1.1 导入依赖3.1.2 添加配置3.1.3 全局跨域配置 3.2 Redis测试3.2.1 Redis配置类3.2.2 启动遇到swagger版本问题3.2.3 测试Redis的缓存3.2.4 测试品牌接口的缓存 四、总结 一、mall开源项目
1.1 来源
mall学习教程架构、业务、技术要点全方位解析。mall项目50kstar是一套电商系统使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术采用Docker容器化部署。
项目github地址: github.com
1.2 项目转移
可以把github上的项目转移到gitee上方便克隆到idea。
具体步骤如下 1.3 项目克隆
由于github部署在国外虽然idea也支持从github上拉取但是克隆速度太慢所以才推荐上述导入gitee后在克隆项目到idea。
具体的克隆步骤过于简单和常规化读者可自行完成或百度一下~
二、Redis 非关系型数据库
2.1 Redis简介
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库并提供多种语言的API是一个高性能的key-value数据库。
它通常被称为数据结构服务器因为值value可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点
Redis支持数据的持久化可以将内存中的数据保持在磁盘中重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据同时还提供listsetzsethash等数据结构的存储。Redis支持数据的备份即master-slave模式的数据备份。
Redis开发文档地址 Redis 简介_redis教程
安装Redis操作简单读者自行百度或查看开发文档安装即可。
2.2 分布式后端项目的使用流程
下图是结合项目经历外加百度查找资料自行总结的基本使用流程。
Redis的使用流程图如下 2.3 分布式后端项目的使用场景
下图是结合项目经历外加百度查找资料自行总结的基本使用场景。
Redis的使用场景图如下 2.4 常见的缓存问题
下图是结合项目经历外加百度查找资料自行总结的常见缓存问题。
Redis的缓存问题图如下 三、源码解析
看源码自我总结出来的看新项目时的基本步骤首先先看集成和配置在从业务的角度来分析结合集成的框架和组件来依次剥削系统的架构。
**解析内容**下方的解析内容大部分在图中解释外面就不做过多的阐述。
3.1 集成与配置
直接拿源码分析只分析与Redis有关的部分其它部分读者请自行看源码分析。
**项目启动**只需要启动mall-tiny-redis模块的部分即可。
**启动所需**启动mysql5Redis的服务创建数据库并导入表sql文件位置在项目同级目录的document文件夹里。
**ps**记得修改数据库连接的配置信息和Redis的连接信息。
3.1.1 导入依赖
在pom文件中导入Redis的相关依赖。 3.1.2 添加配置
在application.yml中添加Redis的相关配置。
3.1.3 全局跨域配置 3.2 Redis测试
3.2.1 Redis配置类
Redis配置类实现了Redis的配置和初始化工作包括创建RedisTemplate对象、配置Redis序列化器、设置Redis缓存有效期等。通过这些配置应用程序可以方便地使用Redis来进行缓存操作。
1、Redis的配置和初始化工作 2、Redis序列化器 3、管理Redis缓存的读写操作和生命周期 3.2.2 启动遇到swagger版本问题
1、出现问题 springboot集成swagger出现 No mapping for GET /swagger-ui.html的错误 2、解决办法 在配置类中继承WebMvcConfigurationSupport类重写addResourceHandlers方法 步骤一继承 步骤二重写 代码如下 Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(doc.html).addResourceLocations(classpath:/META-INF/resources/);registry.addResourceHandler(swagger-ui.html).addResourceLocations(classpath:/META-INF/resources/);registry.addResourceHandler(/webjars/**).addResourceLocations(classpath:/META-INF/resources/webjars/);}3、成功效果 3.2.3 测试Redis的缓存
经过上面的小插曲现在开始步入正题。
1、测试简单缓存 存redisTemplate.opsForValue().set(key, value) 取redisTemplate.opsForValue().get(key) 2、测试Hash结构的缓存 存redisTemplate.opsForHash().putAll(key, map) 取redisTemplate.opsForHash().entries(key) 3、测试Set结构的缓存无序 存redisTemplate.opsForSet().add(key, values) 删redisTemplate.opsForSet().remove(key, values) 取redisTemplate.opsForSet().members(key) 4、测试List结构的缓存有序 批量存redisTemplate.opsForList().rightPushAll(key, values) 删redisTemplate.opsForList().remove(key, count, value) 取redisTemplate.opsForList().range(key, start, end) 5、Redis中的存储效果
读者在前面浏览时肯定有疑惑不是对Redis的操作吗那咋没有看见存储效果姗姗来迟的效果图如下外加一些介绍。 3.2.4 测试品牌接口的缓存
对于品牌接口使用Redis缓存情况这里只有查询品牌详情删除更新这三个使用到了Redis缓存并且是以注解的形式描述这里我举2个例子分别为查询品牌详情和更新品牌信息。
1、获取指定id的品牌详情 注解Cacheable(value RedisConfig.REDIS_KEY_DATABASE, key “‘pms:brand:’#id”, unless “#resultnull”) swagger下测试的效果图 业务逻辑代码 Redis的效果图 2、更新指定id品牌信息 注解CacheEvict(value RedisConfig.REDIS_KEY_DATABASE, key “‘pms:brand:’#id”) swagger下测试的效果图 业务逻辑代码 Redis的效果图 四、总结
本文是有我先从实际项目中获取需求从而对Redis缓存的学习结合源码来学习从mall开源项目中学习Redis感觉收获颇深希望这篇文章对你们也会有所帮助。
后续我也会结合该框架学习一下其他的技术栈。
盈若安好便是晴天