21-1-12

对于分片/哨兵总结

1.Redis分片次要的作用实现内存的扩容,毛病:没有实现高可用的成果.
2.Redis哨兵次要的作用实现了redis节点高可用. 毛病:没有实现内存扩容
Redis哨兵机制本质就是引入第三方的监控,然而须要保障第三方的高可用.就必须引入更多的资源.

redis相干问题

1).redis集群中一共能够存储16384个数据?
不对: redis中存储多少数据齐全由内存决定
hash(key1)=3000
hash(key2)=3000
2).redis集群中最多能够有多少个redis主机? 16384台主机 一台主机治理一个槽位.

Redis集群宕机条件

问题:9个redis节点起码宕机几台集群才解体

Redis的所有节点都会保留以后redis集群中的全副主从状态信息.并且每个节点都可能互相通信.当一个节点产生宕机景象.则集群中的其余节点通过PING-PONG检测机制查看Redis节点是否宕机.当有半数以上的节点认为宕机.则认为主节点宕机.同时由Redis残余的主节点进入选举机制.投票选举链接宕机的主节点的从机.实现故障迁徙.

特点:集群中如果主机宕机,那么从机能够持续提供服务,

当主机中没有从机时,则向其它主机借用多余的从机.持续提供服务.如果主机宕机时没有从机可用,则集群解体.

答案:9个redis节点,节点宕机5-7次时集群才解体.

Redis hash槽存储数据原理

阐明: RedisCluster采纳此分区,所有的键依据哈希函数(CRC16[key]%16384)映射到0-16383槽内,共16384个槽位,每个节点保护局部槽及槽所映射的键值数据.依据主节点的个数,平衡划分区间.

算法:哈希函数: Hash()=CRC16[key]%16384

懒汉式--面试的重点!!! -- 提早加载 + 线程不平安

    class Student{        //1,私有化结构        private Student(){}        //2,本人创立一个对象        static private Student s ; //null        //3,对外提供的一个get()        synchronized static public Student getS() {            // 4, 在多线程编程中,共享资源s,被多条语句操作,肯定会有安全隐患 -- 必须加锁                // 锁加在 同步办法或者同步代码块都能够,                // 如果共享资源是动态资源,那么,锁对象必须 固定是 类名.class         // 如果办法是一般办法锁对象默认是this,如果是动态方锁对象默认是类名.class    //        synchronized (Student.class){                if(s == null){//如果是默认值null,就创建对象--保障了单例!!                    s = new Student();                }                return s;    //        }        }    }

饿汉式--学习工作中应用的形式!!!

    class Person{        //1, 私有化构造方法 -- 不让外界轻易new        private Person(){}        //2,在 类的外部 提供一个new好的对象    //加static -- 因为动态只能调用动态,所以,想要被动态的getP()调用,必须润饰成动态的        static private Person p = new Person();        //3,提供公共的拜访形式getXxx(),获取p对象    //加static -- 目前无奈通过创建对象来调用getP(),所以变成动态的,间接通过类名来调用getP()        static public Person getP(){            return p ;//把创立好的对象p,返回给调用地位        }    }    

伪动态阐明

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