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 结尾的动静页面的技术