zookpper
dubbon
redis
1.分布式锁,使用setnx来添加锁,设置过期时间,防止锁没有释放
2.数据结构 string hash list set zset
3.数据存储在内存中,通过持久化到磁盘
4.aof更安全,文件更大,回复会优先读取aof,rdb有触发条件
5.缓存穿透就是用户大量查询一个不存在的缓存,数据库也没有,但会一直查询,大量进行io交互,给数据库压力,1.可以设置不存在数据也缓存下来,给个比较短的时间,2.设置服务降级,熔断
6.缓存雪崩,就是缓存大批量的失效,倒是用户请求全部查询数据库,压力太大,1.设置热点缓存永不过期,服务降级
mysql索引
1.索引是种数据结构,能加快查询的速度
2.索引分为b+tree索引跟hash索引,hash索引是无序的,只适合等值查询,不支持排序,范围查询,最左匹配原则,而b+tree索引是多路平衡的结构,范围查询不用全表扫描
3.聚簇索引就是叶子节点存的是数据,非聚簇索引叶子节点存的是主键id,聚簇索引查询更快因为可以直接拿到数据,非聚簇索引拿到的是id,还会根据id去查,这就是回表,但是覆盖索引可以直接通过索引拿到数据,可以避免发生回表
4.最左匹配原则,索引建立要考虑到识别度问题,热度高的字段放前面,组建联合索引如(key1,key2,key3),相当于创建了(key1)、(key1,key2)和(key1,key2,key3)三个索引,这就是最左匹配原则
5.三范式 .第一范式(确保每列保持原子性), 第二范式(确保表中的每列都和主键相关) ,第三范式(确保每列都和主键列直接相关,而不是间接相关)
数据库连接池
线程池
mybatis一级二级缓存
一级缓存默认开启,是对sqlsession的缓存,第一次查询会生成缓存,之后查询如果没变,且数据没有更新等操作,就是直接查询获取缓存
二级缓存需要手动开启,配置xml的cache标签 是对mapper的操作,同一级缓存,也会第一次查询生成缓存,之后查询先去差缓存