电商项目---门户数据展示_Redis缓存数据

学习主题:门户数据展示_Redis缓存数据
学习目标:

1.Redis_3主3从集群环境搭建

(1)谈单你对读写分离和主从同步的理解

在每个 Master 上存放着各不相同的数据,即分布式存储的思想。 集群中的每个节点都需要知道集群中自己之外的其它节点。
Redis 集群主(Master(M1,M2,M3))从(Slave(S1,S2,S3))复制、读写分离 。Master 只负责写和 同步数据给 Slave,Slave 负责被读的任务,通过 Slave 的扩容提高读的速度。
所有的 redis 节点彼此互联(PING-PONG 机制), 节点的 fail 是通过集群中超过半数的节 点检测失效时才生效

(2)谈谈redis集群进行数据和solt映射的思想

Redis引入slot来解决如何实现集群模式下部分需求问题。事实上,节点并不是存储在slot里面slot只是用于管理数据与节点相联的手段而已,在处理相关逻辑问题时,redis使用slot作为索引来管理数据

2.创建门户ego-portal-web项目

(1)描述ego-portal-web项目中需要的依赖

<dependencies>
    <dependency>
        <groupId>com.bjsxt</groupId>
        <artifactId>ego-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.bjsxt</groupId>
        <artifactId>ego-rpc-service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <!-- dubbo依赖 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
    </dependency>
    <!-- zookeeper客户端依赖 -->
    <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
    </dependency>
    <!-- spring依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
    <!-- JSP相关 -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- json到java对象的序列化和反序列化 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>
</dependencies>

(2)描述ego-portal-web项目中web.xml配置内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
   <display-name>ego-portal-web</display-name>
   <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
   </welcome-file-list>
   <!-- 
   <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>/favicon.ico</url-pattern>
   </servlet-mapping> -->

   <!-- 以监听器的方式启动spring容器 -->
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

   <!-- 指定spring的配置文件 -->
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/applicationContext-*.xml</param-value>
   </context-param>

   <!-- POST请求的乱码过滤器 -->
   <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <!-- 指定编码方式 -->
      <init-param>
         <param-name>encoding</param-name>
         <param-value>utf-8</param-value>
      </init-param>
   </filter>
   <!-- 映射filter -->
   <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

   <!-- springmvc的servlet -->
   <servlet>
      <servlet-name>ego-portal-web</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 指定springmvc的配置文件 -->
      <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:spring/springmvc.xml</param-value>
      </init-param>
      <!-- 让springmvc随系统启动而启动 -->
      <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
      <servlet-name>ego-portal-web</servlet-name>
      <!-- 伪静态化,接收.html结尾的请求 -->
      <url-pattern>*.html</url-pattern>
   </servlet-mapping>
</web-app>

3.加载门户首页商品类目

(1)描述加载首页商品类目的实现思路

点鼠标悬停在该字段上时会发送一个Ajax请求到后台查询所有商品类目的信息,生产者调用mapper层查询到所有的商品类目信息,消费者调用服务时将获取到的集合封装为json数据类型格式的json字符串,由controller层渲染到页面上

(2)描述需要响应到前端的商品类的数据结构和规范

在这里插入图片描述

4.加载门户首页大广告

(1)描述实现加载首页大广告的实现思路

在页面加载时会发送一个Ajax请求到后台查询category_id对应的所有广告的信息,生产者调用mapper层查询到所有的广告信息,消费者调用服务时将获取到的集合封装为json数据类型格式的json字符串,由controller层渲染到页面上

(2)描述后端响应到前端的大广告数据格式

在这里插入图片描述

5.实现商品类目_大广告缓存_缓存同步

(1)描述实现缓存同步的思路

先去redis中查询缓存,如果有则直接返回查询到的数据,如果没有则会调用服务去数据库中查询数据,将查询到的数据封装为json数据类型的json字符串,存储进redis缓存中,返回该json字符串

(2)描述实现数据缓存的实现思路和缓存,数据库查询顺序

如果redis缓存中没有数据,通过调用ego-rpc服务,查询数据库获得商品类目数据,将ego-rpc 返回的数据进行处理,保存到 redis 缓存,在返回到 ego-portal-web 进行展示
如果 redis 缓存中有数据,直接将缓存中的数据,返回给 ego-portal-web,不用调用 ego-rpc 服 务查询数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值