Redis面试题

1. redis支持的数据类型?

1 Hash -> 是一种KV集合
2 Set  -> String类型的无序集合
3 List -> 有序字符串列表
4 ZSet -> 有序集合且不允许重复
5 String 

2. 什么是Redis持久化?Redis持久化的方式及优缺点

1 持久化就是将内存中的数据写到磁盘上,防止数据丢失。
2 redis提供了两种持久化方式: RDB(默认)、AOF
	RDB是Redis DataBase的缩写,其功能核心就是RDBSAVE和RDBLOAD两个函数
	AOF是Append-only的缩写,其主要功能就是调用定时任务将服务器中的数据写入到磁盘中的AOF文件中
3 比较
	AOF文件比RDB更新频率高,优先使用AOF还原数据
	AOF比RDB安全且保存数据容量更大
	RDB性能高于AOF
注:两个都有,优先加载AOF 

3.redis通讯协议(RESP)

RESP是redis客户端和服务端之间使用的通讯协议,具有实现简单,解析效率高,可读性好等特点

4.Redis 的架构模式

1 单机版:
	特点:简单
	问题:内存容量小,处理效率低,无法高可用
2 主从复制:
	Redis 的复制功能允许用户根据一个Redis服务器来创建任意多个该服务器的复制品,被复制的服务器被称为主服务器(master),而复制出来的服务器复制品则为从服务器(slave),只要主从服务器网络连接正常,那么数据就能保持一致
	特点:主/从 角色,主/从 数据一致,降低主服务器读压力
	问题:无法保证高可用,没有解决主服务器写压力
3 哨兵模式:
	Redis Sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移;
		监控(Monitoring): Sentinel会不断地检查主服务器和从服务器是否运作正常
		提醒(Notification): 当被监控的服务器出现问题时,Sentinel可以通过API向其他应用发出通知
		自动故障迁移(Automatic Failover): 当主服务器不能正常工作时,Sentinel会开始自动故障迁移工作
	特点:高可用,节点监控,故障迁移
	问题:主从模式,切换丢数据,没有解决主服务器写压力
4 集群(proxy):
	Twemproxy 是一个 Twitter 开源的一个 redis 和 memcache 快速/轻量级代理服务器; Twemproxy 是一个快速的单线程代理程序,支持 Memcached ASCII 协议和 redis 协议。
	特点:支持多种hash算法,支持失败节点自动删除,后端sharding分片逻辑对业务透明,业务方的读写方式和操作单个Redis一直
	问题:增加了新的proxy,需要维护其高可用,failover逻辑需要自己实现,扩展性差
5 集群(直连)
	Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接
	特点:
		无中心架构(不存在哪个节点影响性能瓶颈),少了 proxy 层。
		数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。
		可扩展性,可线性扩展到 1000 个节点,节点可动态添加或删除。
		高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本
		实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave到 Master 的角色提升。
	问题:资源隔离性较差,容易出现相互影响的情况;数据通过异步复制,无法保证数据的强一致性
posted @ 2019-07-23 21:40  珞裳夜色  阅读(118)  评论(0编辑  收藏  举报