01-Redis相关
redis
单线程
redis持久化
基于内存存储,关机后数据失效。
某一时刻,将数据写入磁盘。
存储位置在配置文件的dir配置。
默认文件名称:dffilename
rdb触发持久化
bgsave命令
save命令,会造成线程阻塞
shutdown
rdb
默认开启。dump.rdb文件
reids复制一个一摸一样的进程进行持久化。
将数据写入临时文件
持久化结束后替换上次持久化的文件。不影响主进程。
查看进程可以看到。
可以看到临时文件。、、
宕机,会丢失数据。
rdb持久化能关掉么 ?
注释掉save配置。
注意:主从集群,关不了rdb
原因:主机将rdb文件发给从机
为什么fork一个进程?
redis是单线程,只能做一件事情。
aof
将redis操作日志保存起来,读操作不记录.
默认保存的是redis协议。
appendonly.aof
开启在配置文件中
appedonly: yes
配置
默认一秒执行一次,可能都是1秒数据
日志文件记录过大?
aof重写?
auto-aof-rewrite-Min-size 100G
100过后重写
auto-aof-rwrite-percentage 100
假设100G重写后为80G
下次重写触发为80+80*100%=160G
aof和rdb对比?
rdb适合大规模的数据恢复,对数据完整性要求不是很高,隔一段时间做一次备份。
rdf性能消耗低,丢失数据多。
aop性能消耗高丢失数据多。
集群
单机问题
单机故障,容量瓶颈(持久化文件加大),qps查询效率
主从复制
解决了qps
解决问题: 单机模式
qps查询效率
能干嘛?》
读写分离
主机专门写数据 从机专门读数据
容灾备份
数据备份,避免数据丢失。
问题?
主机挂了,从机不会立马切换。
哨兵
主从复制升级版。
增加哨兵节点(多个)
主机挂了,哨兵会从我们的从节点,选取一台替换主机
解决问题?
解决单机故障。
cluster集群
有小集群组成大的集群环境。
一个master下有两个salve
故障转移期间不可用。
对比哨兵有点?
- 故障转移期间,其他小集群仍然可用。
假如有九个机器,三个小集群,一个故障后,仍然后三分之二纪律可使用 - 容量问题解决
缓存的三大问题?
缓存穿透
数据库中没有的数据,缓存中也没有。
起不到保护数据库的作用。
解决方案:缓存空对象
缓存击穿
缓存中没有数据,但是数据库存在数据(一般为缓存时间到期)
很多用户过来访问数据,查询同一个数据,不存在。就会同时查询数据库,同时插入缓存。
缓存雪崩
大部分数据失效。服务器挂了。大量数据在同时时间失效了。。
搭建高可用集群。过期时间,可以设置不同时间。加入缓存。
缓存和数据库一致性
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。