1. Redis集群阐明

1.1 分片/哨兵有哪些毛病

1.分片毛病: 分片的次要性能是实现内存的扩容的,然而没有高可用的成果.
2.哨兵毛病: 数据没有扩容,哨兵自身没有高可用机制
需要: 既能够实现内存的扩容同时实现高可用机制(不必第三方).

1.2 Redis集群搭建

1.2.1 Redis集群搭建问题阐明

1.首先敞开所有的Redis服务器

2.查看配置文件编辑是否正确.
3.删除多余的配置文件

4.重启redis服务器

5.搭建redis集群

redis-cli --cluster create --cluster-replicas 1 192.168.126.129:7000 192.168.126.129:7001 192.168.126.129:7002 192.168.126.129:7003 192.168.126.129:7004 192.168.126.129:7005

1.3 集群入门案例

@Test    public void testCluster(){        Set<HostAndPort> sets = new HashSet<>();        sets.add(new HostAndPort("192.168.126.129", 7000));        sets.add(new HostAndPort("192.168.126.129", 7001));        sets.add(new HostAndPort("192.168.126.129", 7002));        sets.add(new HostAndPort("192.168.126.129", 7003));        sets.add(new HostAndPort("192.168.126.129", 7004));        sets.add(new HostAndPort("192.168.126.129", 7005));        JedisCluster jedisCluster = new JedisCluster(sets);        jedisCluster.set("jedis", "集群赋值");        System.out.println(jedisCluster.get("jedis"));    }

1.4 面试题

1.redis集群中一共能够存储16384个KEY?? 不对
答:16384只是槽位的数量只负责布局这个数据归谁治理的问题.至于数据如何存储,是由redis内存决定的.
2.Redis集群中最多能够有多少台主机? 16384主机.
3.Redis中如果遇到多线程操作,是否有线程安全性问题 ? 没有
因为:redis服务器是单过程单线程操作.每次操作都是由一个线程执行,所以不会有线程安全性问题.
4.Redis如何实现内存数据的优化? LRU/LFU/随机算法/TTL

1.5 SpringBoot整合Redis集群

1.5.1 编辑properties文件

阐明:将redis集群的节点写入pro配置文件中

# 配置单台redis服务器#redis.host=192.168.126.129#redis.port=6379##配置redis分片#redis.nodes=192.168.126.129:6379,192.168.126.129:6380,192.168.126.129:6381# redis集群配置redis.nodes=192.168.126.129:7000,192.168.126.129:7001,192.168.126.129:7002,192.168.126.129:7003,192.168.126.129:7004,192.168.126.129:7005

1.5.2 编辑配置类

package com.jt.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import java.util.HashSet;import java.util.Set;@Configuration  //标识我是配置类@PropertySource("classpath:/properties/redis.properties")public class RedisConfig {    //实现redis集群操作    @Value("${redis.nodes}")    private String nodes;   //node,node,node    @Bean    public JedisCluster jedisCluster(){        Set<HostAndPort> nodeSet = new HashSet<>();        String[] nodeArray = nodes.split(",");        for (String node : nodeArray){ //host:port            String host = node.split(":")[0];            int port = Integer.parseInt(node.split(":")[1]);            nodeSet.add(new HostAndPort(host,port));        }       return new JedisCluster(nodeSet);    }   /* *//**     * SpringBoot整合Redis分片,本质:ShardedJedis对象,交给容器治理     *//*    @Value("${redis.nodes}")    private String nodes;   //node,node,node    @Bean    public ShardedJedis shardedJedis(){        List<JedisShardInfo> shards = new ArrayList<>();        String[] nodeArray = nodes.split(",");        for(String node : nodeArray){ //node=ip:port            String host = node.split(":")[0];            int port = Integer.parseInt(node.split(":")[1]);            //筹备分片节点信息            JedisShardInfo info = new JedisShardInfo(host,port);            shards.add(info);        }        return new ShardedJedis(shards);    }*/   /* @Value("${redis.host}")    private String host;    @Value("${redis.port}")    private Integer port;    @Bean    public Jedis jedis(){        return new Jedis(host,port);    }*/}

1.5.3 编辑AOP配置

在AOP中注入Redis缓存对象

2.京淘前台我的项目搭建

2.1 京淘架构图设计

2.2 JT-WEB我的项目创立

2.2.1 创立JT-WEB服务器

2.2.2 增加继承/依赖/插件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <!--我的项目坐标-->    <modelVersion>4.0.0</modelVersion>    <artifactId>jt-web</artifactId>    <!--打war包-->    <packaging>war</packaging>    <!--父级工程-->    <parent>        <artifactId>jt2007</artifactId>        <groupId>com.jt</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <!--增加依赖项-->    <dependencies>        <dependency>            <groupId>com.jt</groupId>            <artifactId>jt-common</artifactId>            <version>1.0-SNAPSHOT</version>        </dependency>    </dependencies>    <!--4.增加maven插件-->    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

2.2.3 导入动态资源文件

阐明:将课前材料中的文件src目录导入到jt-web中

2.2.4 对于主启动类阐明

阐明:jt-web服务器启动时会加载数据源的自动化配置,然而web服务器没有配置数据源,所以报错.

启动类上增加数据源启动.

2.2.5 配置工作目录

2.3 域名反向代理

需要:要求用户通过http://www.jt.com 拜访localhost:8092服务器.

2.3.1 批改host文件

2.3.2 批改Nginx配置文件

#配置前台服务器    server {        listen 80;        server_name www.jt.com;        location / {            proxy_pass http://localhost:8092;        }    }

批改之后,重启nginx服务器

2.3.3 页面成果展示

2.4 谷歌浏览器禁用HTTPS

键入地址:

批改实现之后,先清空缓存之后重启浏览器

2.5 开启后缀类型匹配

阐明: 因为京东商城的商品展示时通过
url:https://item.jd.com/100213774...

URL地址小结:    1.http://www.jt.com/index         该申请会被Controller进行拦挡    2.http://www.jt.com/index.html  该申请默认条件下示意获取资源文件,不会被拦挡    个别条件下:Controller只拦挡前缀类型的申请. 如果须要拦挡后缀类型的申请须要独自配置.

3 登录注册页面的跳转

3.1 实现通用的页面跳转

url1:http://www.jt.com/user/login.html     跳转页面 login.jspurl2:http://www.jt.com/user/register.html  跳转页面 register.jsp

需要: 是否利用一个Controller办法.实现通用页面的跳转?

package com.jt.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/user")public class UserController {    /**     * 实现用户登录/注册页面的跳转     * url1: http://www.jt.com/user/register.html     * url2: http://www.jt.com/user/login.html     */    @RequestMapping("/{moduleName}")    public String module(@PathVariable String moduleName){        return moduleName;    }}

3.2 伪动态的体现

伪动态是绝对实在动态来讲的,通常咱们为了加强搜索引擎的敌对性,都将文章内容生成动态页面,然而有的敌人为了实时的显示一些信息。或者还想使用动静脚本解决一些问题。不能用动态的形式来展现网站内容。然而这就损失了对搜索引擎的敌对性。怎么样在两者之间找个两头办法呢,这就产生了伪动态技术。伪动态技术是指展现进去的是以html一类的动态页面模式,但其实是用ASP一类的动静脚本来解决的。

总结:以.html结尾的一种动静页面的模式

作业

1.预习什么是跨域?

1.JSONP 2.CORS形式