一,Redis数据丢失,断电怎么办?
在redis当中有RDB和AOF备份操作,RDB是每隔一段时间去同步redis,生成二进制文件。AOF将写命令加到一个appendonly的文件中,数据量比较全相对实时,但是文件比较大。RDB是bgsave命令,后台fork子进程,通过写时复制,生成的redis文件大的话就会有很大的影响
二,redis集群怎么保证?
制定哨兵模式,当master出现宕机的时候,从slave中选取最优的,保证高可用性。
三,集群脑裂现象怎么解决?
预防脑裂——设置超时:如 - 链接超时设置为2秒。任何链接只能在2秒内工作。那么哨兵选举新的master,可以延时2秒。 异地多活:提升网络健康状态,保证硬件不出现问题,就不会有链接中断的可能,且万一链接中断,一定是master对外所有链接中断。
解决脑裂——设置监控中心,提供预警功能。线下人为处理脑裂后果。 定时扫描,同步数据。
四,redis初始化时如何同步数据库
启动一台slave 的时候,会发送一个psync命令给master ,如果是这个slave第一次连接到master,他会触发一个全量复制。master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave。
五,缓存击穿怎么解决?
Hot Key在某一时间突然失效,出现数据崩溃现象。
1,缓存时间永不失效
2,用分布式锁避免直接落在库中:set nx可以用jedis实现。(如何避免死锁的现象?)
3,设置一个多级缓存,避免直接查询数据库,使用eache。