Redis学习笔记

数据持久化

RDB方式的持久化是通过快照完成的,当符合一定条件是Redis会自动将内存中的所以数据生成一份副本并存储在硬盘上,这个过程就是“快照”。简单理解:RDB是全量同步,需要知道触发的场景。

AOF方式的持久化是通过增量的方式同步,将Redis执行的每条写命令追加到硬盘文件中。简单理解:AOF是增量同步。

注意:由于系统缓存机制,AOF增量同步会先同步到硬盘缓存中,每30秒写到硬盘。

Redis可以配置同步频率。

1、每次AOF写入一个命令都会执行同步操作,这是最安全也是最慢的方式;

2、每秒钟进行一次同步操作,一般来说使用这种方式已经足够;

3、不主动进行同步操作,这是最不安全的方式。

主从复制(灾备或数据冗余)

Redis学习笔记_第1张图片

哨兵自动发现

1)每10秒哨兵会向主库和从库发生INFO命令

自动加入从库

2)每2秒哨兵会向主库和从库 哨兵频道发生自己的信息(哨兵、主库信息)

自动加入哨兵

3)每1秒哨兵会向主库、从库和其他哨兵节点发生PING命令

自动故障恢复

 

故障恢复

当哨兵PING的节点未通时,认为该节点主观下线,(主观下线表示当前哨兵认为其已经下线)如果该节点是主库,哨兵询问其他哨兵这个库的情况,当大于半数哨兵认为这个节点主观下线,哨兵会认为其客观下线,并选举领头的哨兵,发起故障恢复,自动切换主库,从变主,主变从。

 

集群

旧版redis用客户端分片实现集群,让客户端根据主键计算落到哪个库。

缺点:水平扩容比较复杂、难度大,分片后,增加节点,需要重新分区对数据进行手工迁移,为了保证数据一致性,集群还需要暂时下线。

解决办法:预分片技术,初期考虑好存储规模,分好足够多的库,(前期数据量小,一台机器上部署多个实例),后期数据多扩容时,只需要将一些实例迁移到新机器上,不需要重新分片并下线、数据迁移。

 

哨兵与集群的区别

从特效上看,哨兵可以视作集群的子集,在不需要分片的情况下,哨兵就足够使用。如果需要水平扩容就需要使用集群

 

 

新的集群方式

通过对键的有效部分,进行hash,分配在hash环上。

对于涉及多键的命令(如mget) ,如果每个键都位于同一个节点中,则可以正常支持,否则提示错误。

有效部分指:键全名是or {xxx},大括号里面的内容。

这样{user01}.name 和 {user01}.age可以分配到同一个分区,可以用mget获取。

你可能感兴趣的:(Redis,Redis)