第三天面试

Redis持久化,有几种持久化方式,优缺点是什么

持久化操作就是把内存的数据写道磁盘中去,防止服务宕机了内存数据丢失

RDB(默认)和AOF

1.RDB

功能核心函数rdbsave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数

2.AOF

每当执行服务器定时任务或者函数时flushAppendOnlyFile函数都会被调用,这个函数执行了一下两个工作

​ 1.aof写入保存:

​ WRITE:write根据条件,将aof_buf中的缓存写入到AOF文件

​ SAVE:save根据田间,将fsync或fdatasynv函数,将AOF文件保存到磁盘中

存储结构:内容时redis通讯协议RESP格式命令文本存储

比较:

​ aof文件比rdb跟新频率高,优先使用aof还原数据

​ aof比rdb更安全更大

​ rdb性能比aof好

​ 如果两个都进行了配置优先加载AOF

Redis架构模式

1.单机版

特点:简单

问题:1.内存容量有限、2.处理能力有限、3.无法实现高可用

2.主从复制

只要主从服务器之间的网络连接正常,主从服务器两者就会具有相同的数据,主服务器就会一直将发生在自己身上的数据同步给从服务器,从而一直保证出从服务器的数据相同

特点:1主从角色、2.主从数据相同、3.降低了主服务器的读压力,转交给了从服务器

问题:1.无法保证高可用、2.没有解决主服务器写压力

3.哨兵

哨兵是一个分布式系统中监控主从服务器,并在主服务器下线时自动进行故障转移

三个特性:

1.监控:哨兵会不断地检查主从服务器是否正常的运行

2.提醒:当监控到某个服务器出现问题时,哨兵可以通过api向管理员或者其他应用程序发送通知

3.自动故障迁移:当一个主服务器不能正常工作时,哨兵会开始一次自动故障迁移

特点:1.保证高可用、2.监控各个节点、3.自动故障迁移

问题:1.主从模式,切换需要时间丢数据、2.没有解决master写的压力

4.集群(代理型)

TwemProxy是一个Twitter开源的一个redis和memcache快速/轻量级的代理服务器:TwemProxy是一个快速的单线程代理程序,支持redis协议和MemcachedASCII协议

特点:

1.多个hash算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins

2.支持失败节点自动删除

3.后端sharding分片逻辑对业务透明,业务方的读写方式和操作单个Redis一致

缺点:1.添加了新的proxy,需要维护高可用、2.自动故障迁移逻辑需要自己实现,其本身不能支持故障的自动迁移可扩展性差,进行扩缩容都需要手动干预

5.集群(直连型)

redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接

特点:1.无中心架构(不存在哪个节点影响性能瓶颈),少了代理层

2.数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布

3.可扩展性,可线程扩展到1000个节点,节点可动态添加或删除

4.高可用性,部分节点不可用时,集群仍可用。通过增加slave做备份数据副本

5.实现故障自动failover,节点直接通过gossip协议交换状态信息,用投票机制完成从服务器到主服务器的角色提升

缺点:

1.资源隔离性较差,容易出现互相影响的情况。

2.数据通过异步复制,不保证数据的强一致性。

使用Redis有什么好处

1.速度快、2.支持丰富的数据类型、3.支持事务、4.丰富得特性:缓存,消息,按key设置过期时间,过期后将会自动删除。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页