一、主从模式(也有称为复制的)
主从模式在其他如mysql的数据库中应该也是有相同原理的应用,大致也可称为读写分离;其中又涉及主数据库和从数据库。
写数据库一般为主数据库,读数据库则为从数据库。
目前作者所涉及的项目大部分也都是读为多,通过读写分离,可以有效将负载分担到不同配置的服务中(由于不清楚读写应该如何合理分配CPU、内存、硬盘等,就不乱误导人了)。
因为上述的原因,一般从数据库会多一些
缺点:由于写数据库的写入操作和分发给从服务器的同步操作是异步进行的,所以存在主从数据不一致的可能性
* 如果只是一台主数据库,多台从数据库,则无法保证高可用性(需要手动维护,切换主数据库)
大致的原理:
1、主数据库(写)是正常配置
2、在从数据库中配置跟随的主数据库
3、主数据库接收到sync指令后,通过RDB快照当前的数据库,结束后发送给从服务器,且同时创建一个队列来保存快照创建期间以及之后产生的操作
4、从数据库接收到快照后,在本地执行;且接收主数据库队列的增量同步数据
5、所有写的操作都通过主数据库,而主数据库通过异步执行的方式向从服务器推送增量数据进行同步
6、大部分的读操作都从从数据库中进行
7、虽然redis是单线程的,但是不代表所有的操作都是单线程,只是主线程是单线程模式。而为了保持redis的高性能读写,主数据的写入操作和从数据库之间的数据同步是异步进行的
如何配置:
配置文件中增加(仅从数据库配置):
5.0之后:
REPLI