第27周JavaSpringboot电商进阶开发 3.常见问题解答

发布于:2025-03-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

Redis数据结构及项目应用和代码优化 - 课程笔记整理

Redis数据结构及项目应用

一、问题引入

同学们提出了关于Redis数据结构的问题,主要集中在项目中使用了哪些Redis数据结构,以及它们在项目中的具体应用场景。

二、项目中的Redis应用

在我们的项目中,尤其是在目录列表缓存部分,使用了Redis作为缓存工具。例如在category.ctrl中,有一个目录列表缓存,使用了@Cacheable注解,这里缓存的内容虽然在逻辑上是一个ArrayList,但在Redis中它被存储为String类型。

三、Redis数据结构介绍

Redis主要有五种数据结构:

  1. String:最基本的数据结构,以键值对的形式存储,常用于缓存、共享Session等场景。
  2. Hash:类似于Java中的HashMap,适合存储对象,例如班级学生家庭住址统计。
  3. List:类似于Java中的LinkedList,适用于需要频繁插入和删除操作的场景,如商品列表或用户列表。
  4. Set:类似于Java中的HashSet,存储无序且不重复的元素,可用于存储中奖用户ID等。
  5. ZSet(有序集合):在Set的基础上增加了排序功能,适用于排行榜等需要排序的场景。

四、为什么选择String类型存储

在项目中,尽管我们缓存的内容是一个列表,但Redis将其转换为String类型存储。这是因为Redis并不会根据我们传入的数据结构类型来决定存储类型,而是将内容转换后统一存储为String。这样做的好处是简单高效,尤其是在缓存场景中。

代码优化 - 上传功能的整理

一、问题引入

有同学提出,项目中上传功能的代码是否可以进行整理和优化,是否有必要建立一个与上传相关的服务。

二、优化思路

根据分层原理,控制层(ctrl)不应包含过多的业务逻辑。因此,像创建文件这样的操作应该抽取到服务层(service)中。

三、代码改造步骤

  1. 创建UploadService接口及实现类

    • 新建UploadService接口和UploadServiceImpl实现类。
    • 将原本在控制层中的createFile方法移动到服务层。
  2. 改造相关方法

    • 在控制层中,将原本直接调用的方法改为通过UploadService调用。
    • 使用IDEA的重构功能,将上传相关的代码抽取到服务层的方法中。
  3. 处理依赖和注解

    • 在服务层类上添加@Service注解,确保Spring能够管理该bean。
    • 在控制层中注入UploadService,替换原有的方法调用。

四、具体改造示例

  • 抽取createFile方法

    • createFile方法从控制层移动到UploadServiceImpl中,并在接口中声明该方法。
    • 在控制层中通过UploadService调用该方法。
  • 改造uploadProduct方法

    • uploadProduct方法中的业务逻辑抽取到UploadServiceImpl中,通过UploadService调用。
  • 处理图片上传相关代码

    • 将图片上传、处理等逻辑抽取到服务层,使控制层代码更加简洁。

五、总结

通过将上传相关的功能抽取到服务层,我们不仅使代码结构更加清晰,而且提高了代码的复用性和可维护性。这样,在项目中添加新的上传功能或修改现有功能时,都可以更加方便地进行操作。

以上就是本小节的主要内容,我们解答了关于Redis数据结构的问题,并对项目中的上传功能进行了代码优化。希望这些内容能帮助大家更好地理解和使用项目中的相关功能。下一小节再见!


网站公告

今日签到

点亮在社区的每一天
去签到