- 对读写能力进行扩展,采用读写分离方式解决性能瓶颈
运行一些额外的服务器,让它们与主服务器进行连接,然后将主服务器发送的数据副本并通过网络 进行准实时的更新(具体的更新速度取决于网络带宽)通过将读请求分散到不同的服务器上面进行处理, 用户可以从新添加的从服务器上获得额外的读查询处理能力
- redis已经发现了这个读写分离场景特别普遍,自身集成了读写分离供用户使用。我们只需在redis的配置文件里面加上一条,【slaveof host port】语句
步骤:
1创建连个文件夹如:6379 6380
2复制redis.conf到两个文件夹中
3修改6380中conf的
port 6380
daemonize yes //守护进程方式启动
slaveof 127.0.0.1 6379//作为6379的从服务
pidfile /var/run/redis_6380.pid//Pid文件名字
logfile 6380.log
4分别到两个文件夹中启动
../redis-server redis.conf
Redis读写分离是怎么做数据同步的
- 进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称作“数据库状态一致”
RDB 全量持久化 AOF (append only if) 增量持久化
- redis2.8版本之前使用旧版复制功能SYNC
* SYNC是一个非常耗费资源的操作 * 主服务器需要执行BGSAVE命令来生成RDB文件,这个生成操作会耗费主服务器大量的的CPU、内存和磁盘读写资源 * 主服务器将RDB文件发送给从服务器,这个发送操作会耗费主从服务器大量的网络带宽和流量,并对主服务器响应命令 * 请求的时间产生影响:接收到RDB文件的从服务器在载入文件的过程是阻塞的,无法处理命令请求
- 2.8之后使用PSYNC
- PSYNC命令具有完整重同步(full resynchronization)和部分重同步(partial resynchronization1)两种模式
* 部分重同步功能由以下三个部分构成: * 主服务的复制偏移量(replication offset)和从服务器的复制偏移量 * 主服务器的复制积压缓冲区(replication backlog),默认大小为1M * 服务器的运行ID(run ID),用于存储服务器标识,如从服务器断线重新连接,取到主服务器的运行ID与重接后的主服务器运行ID进行对比,从而判断是执行部分重同步还是执行完整重同步
技术之家希望本篇文章对你有用!!
欢迎来到技术之家,
如需转载,烦请保留本文链接和出处:http://www.jszja.com/contents/14/1455.html
您的支持将是我们前进的动力!如对本篇文章有疑问或建议,请通过本站下方邮箱联系我们,让技术之家每天进步一点点!(●'◡'●)