当前位置: 首页 > news >正文

电商项目高级篇06-缓存

电商项目高级篇06-缓存

  • 1、docker下启动redis
  • 2、项目整合redis
  • 3、redis改造三级分类业务

缓存

流程图:
在这里插入图片描述

data = cache.load(id);//从缓存加载数据
If(data == null){
data = db.load(id);//从数据库加载数据
cache.put(id,data);//保存到 cache 中
}
return data;

在我们的单体项目中可以用Map作为本地缓存,速度还很快。但是分布式项目。由于有多个服务。每次负载均衡到服务时,可能都不命中本地缓存,本地缓存不会在多个服务间生效。所以应该集成分布式缓存:比如redis

1、docker下启动redis

docker下载redis镜像

docker pull redis

创建镜像挂载
在这里插入图片描述

在redis文件夹下网络下载redis.conf文件

wget http://download.redis.io/redis-stable/redis.conf

去编辑redis.conf文件
在这里插入图片描述
注释后代表任意ip访问

在这里插入图片描述
设置redis密码

appendonly yes:redis持久化

##最后挂载永久启动redis

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes  --requirepass 123456

然后我们用rdm工具连上redis
在这里插入图片描述

2、项目整合redis

1、pom.xml引入依赖

 <!--整合redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2、application.yml配置redis配置信息
在这里插入图片描述
3、使用RedisTemplate操作redis

	@AutowiredStringRedisTemplate stringRedisTemplate;
	@Testpublic void testRedis(){ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();ops.set("hello","world_"+ UUID.randomUUID().toString());String hello = ops.get("hello");System.out.println(hello);}

在这里插入图片描述
测试用例执行成功,控制台输出redis的值。

检查redis里是否有这个值

在这里插入图片描述
集成redis是成功的

3、redis改造三级分类业务

CategoryServiceImpl

	 @Autowiredprivate StringRedisTemplate redisTemplate;@Overridepublic Map<String, List<Catelog2Vo>> getCatalog() {// 1、获取缓存中的数据String catalog = redisTemplate.opsForValue().get("catalog");if (StrUtil.isBlank(catalog)) {// 2、从数据库中获取数据Map<String, List<Catelog2Vo>> catalogDb = this.getCatalogDb();// 3、缓存数据redisTemplate.opsForValue().set("catalog", JSON.toJSONString(catalogDb));return catalogDb;}// 将缓存中的数据返回return JSON.parseObject(catalog,Map.class);}

在这里插入图片描述

http://www.lryc.cn/news/495231.html

相关文章:

  • 使用 `aircrack-ng`扫描、获取握手包
  • 基于大数据python 酒店数据分析可视化大屏系统(源码+LW+部署讲解+数据库+ppt)
  • uniapp中父组件调用子组件方法
  • STL算法之set相关算法
  • vscode中json文件的注释飘红
  • 【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询
  • 三:安装服务-controller node
  • 自定义类型: 结构体、枚举 、联合
  • Bert+CRF的NER实战
  • 永久停用PostgreSQL 归档功能
  • 《数字图像处理基础》学习07-图像几何变换之最近邻插值法放大图像
  • pip安装库时报错(请求超时)
  • XPath表达式详解及其在Web开发中的应用
  • Qt中Socket网络编程
  • 【05】Selenium+Python 两种文件上传方式(AutoIt)
  • Python网络编程
  • openssl生成ca证书
  • Oracle RAC 环境下数据文件误建在本地目录的处理过程
  • 新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议
  • windows11 使用体验记录
  • 202页MES项目需求方案深入解读,学习MES系统设计规划
  • 前端css实例
  • YOLO的框架及版本迭代
  • PotPlayer 最新版本支持使用 Whisper 自动识别语音生成字幕
  • JavaScript零基础入门速通(中)
  • 【Yarn Bug】 yarn 安装依赖出现的网络连接问题
  • 字节青训Marscode_5:寻找最大葫芦——最新题解
  • MySQL —— MySQL 程序
  • LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率
  • 不玩PS抠图了,改玩Python抠图