1、Redis有几种集群模式
redis有三种集群模式:主从集群,哨兵集群模式、去中心化集群模式
主从模式:提供数据的多冗余,主节点和从节点提供相同的数据,主节点宕机后,集群不可用
哨兵模式:哨兵模式是官方推荐的高可用方案,但不是真正的高可用。哨兵模式是在主从集群基础上实现的,每个节点部署哨兵,涉及到主观下线和客观下线,当半数以上的哨兵认为master宕机后,会根据优先级从从节点中选取一个成为新的master,当坏掉的master恢复后,会自动成为从slave。解决了主从集群的单点故障问题,但是所有节点提供相同的服务,资源有点浪费
去中心化集群模式:采用无中心化结构,每个节点保存数据和整个集群的状态,每个节点中间能够进行内部通讯,redis-cluster的数据使用分片的方式实现,redis-cluster集群内置了16384个哈希槽,0-16383,当要存储一个key-value时,redis会对key进行crc16运算出一个结果,用这个结果对16384进行取余,然后将这个key分配到对应的节点哈希槽中。当连接任何一个节点获取这个数据时,也会有这样的算法,然后内部跳转到存放key的这个节点上。去中心化一般也会做成主从模式,一个主节点对应一个或多个从节点,当主节点宕机后,从节点会成为新的主节点。当主节点没有从节点时,集群不可用,当主节点和从节点同时失效,集群不可用。
2、Redis持久化方式有几种
2种,RDB、AOF
RDB相当于把数据拍了个快照,但是可能因为在拍快照的时候,有新的数据生成,导致数据不够完整。AOF的完整性会高一点,因为AOF记录的数据的的写指令,再重启之后,只需要将这些指令从新执行一遍,就能够恢复数据。我们一般使用的是RDB方式,AOF视情况开启,一般只会选择一种,因为开启两种的话,可能会对redis造成一定的压力。只用RDB的话虽然数据完整性不高,但是影响也不大,因为数据库中还有一份,只需要同步到redis就行。
3、Redis和Mysql的区别
mysql支持事务,redis不支持。mysql支持通用sql语句,redis不支持。mysql使用固定表结构,可用复杂查询。mysql的数据存储方式单一,redis数据存储比较灵活。mysql数据存储于磁盘,对于高并发的读写请求,磁盘io是很大的瓶颈。redis的数据存储于磁盘或者内存中,读写效率更高。
4、redis针对内存过高,有其他操作吗
设置key的过期时间,对于不经常使用的key过期时间可以设置的小一点。redis会将所有设置了过期时间的key放入一个字典中,然后每隔一段时间从字典中随机取一些key检查过期时间,并删除已过期的key。
5、reids上存储什么数据
热点数据:一般会存一些经常查询且变动不是很频繁的数据
比如:新闻网站实时热点、微博热搜等,需要频繁更新。总数据量大得时候直接从数据库中查询会影响性能。
电商网站信息:大型电商平台初始化页面数据的缓存。比如去哪网购买机票的时候首页的价格和你点进去的价格会有差异
6、mysql和redis为什么结合使用
当网站的处理和访问量非常大的时候,我们数据库的压力就变大了,数据库同时处理数据的能力就会大打折扣。使用redis,将表中经常访问的数据记录到Redis中,用户查询时先去查询redis中的数据,没有的话再查询mysql,由于数据是存储在内存中的,处理速度会非常快。
7、redis怎么做数据备份
RDB快照:备份文件,文件大小比较大
AOF备份:备份的是语句
8、redis哨兵原理
哨兵是一个独立的进程,原理就是哨兵通过发送命令,等待redis主节点响应,超过指定时间没有响应,哨兵会认为主节点下线了,选举从节点成为主节点。其中涉及到一个主观下线和客观下线。指定时间内哨兵没收收到目标节点的响应会认为 该节点主观下线,当半数以上的哨兵认为该节点下线后则认为客观下线,然后会发起选举,选举从节点成为主节点。