redis 同步

1、忽略信号signal(SIGPIPE, SIG_IGN)

  当服务器close一个连接时,若client端接着发数据。

  根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。

  根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。

  若不想客户端退出可以把SIGPIPE设为SIG_IGN

  如:    signal(SIGPIPE,SIG_IGN);   

  这时SIGPIPE交给了系统处理。

  服务器采用了fork的话,要收集垃圾进程,防止僵尸进程的产生,可以这样处理:

  signal(SIGCHLD,SIG_IGN); 交给系统init去回收。

  这里子进程就不会产生僵尸进程了。

2、读取配置文件   若传递参数则直接读取参数  若没有传递  使用默认路径

  配置文件包括  日志的配置文件   输入数据的地址   redis集群的地址   线程数

3、创建n+2个线程  一个读线程  一个写线程  n个任务线程

创建n个信号量   n个task队列

每个线程绑定一个函数  处理数据

对写task的时候都先访问信号量

4、链接redis   如果链接失败就一直重连

在写redis之前

时间: 2024-10-13 10:28:47

redis 同步的相关文章

MySQL向redis同步数据

##创建表及数据 CREATE TABLE events_all_time ( id int(11) unsigned NOT NULL AUTO_INCREMENT, action varchar(255) NOT NULL, count int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY uniq_action (action) ); insert into events_all_time(action,count) values

Redis同步(主从复制)

目录1.Replication的工作原理2.如何配置Redis主从复制3.应用示例 1.Replication的工作原理在Slave启动并连接到Master之后,它将主动发送一条SYNC命令.此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步.而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中.此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给

redis同步指定key数据到其他redis中

#!/bin/bash srchost=111.xx.xx.xx #源地址 srcport=6379 #源端口 srcpass=passwod #密码 srcku=2 #同步的库 desthost=111.x.xx.xx destport=6666 destpass=xxxxx destku=13 redis-cli -h $srchost -p $srcport -a $srcpass -n $srcku keys "*" | while read key do redis-cli

redis主从同步原理

redis主从: 作用: 实现数据的实时备份,可用来实现redis的读写分离及redis高可用 主从同步原理: 一主一从环境: 环境:2台redis,一台master一台slave 1,master等待命令进入 2,slave连接master,发送一个sync命令 3,master开始执行BESAVE,并使用缓冲区记录BESAVE之后所执行的所以写命令 4,slave端如果现在有请求进来,可以根据配置项来决定是继续用当前数据做处理客户端的请求还是给客户端返回报错 5,master BESAVE执

Redis高可用架构之主从同步

CAP原理 最终一致性 Redis提供的同步机制 主从同步 丛丛同步 缓解master节点的压力 Redis的同步方式 增量同步 Redis同步的指令流,环形Buffer存储指令流 缺点:buffer大小固定,会存在未执行的指令被覆盖掉的情况 快照同步 耗费资源,主节点Bgsave到磁盘文件中,再将文件中的内容传送到从节点 从节点在进行快照文件接受完毕后进行全量加载,加载前先删除当前内存的数据,记载完毕后才继续进行增量同步 需要合理设置buffer大小,避免发生快照同步死循环 增加从节点 首先进

Redis+keepalived实现双机热备

一. 简介 安装使用centos 5.6(64) Master 192.168.2.235 Slave 192.168.2.236 Vip 192.168.2.200 编译环境 yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel 当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby: 当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从

百万级运维心得一:Mongodb和Redis数据不能放在同一个服务器

百万级运维经验一:Mongodb和Redis数据不能放在同一个服务器 一开始时,为了省服务器,把Mongodb和Redis放在一个服务器上.网站每到高峰期都特别卡,还经常出现502.找了很久的原因,发现硬盘的写数据很大,IOPS也很高,排查了很多原因都没找到.然后再仔细研究监控,发现写硬盘的操作很有规律,每隔几分钟就有一次频繁的写硬盘,联想到Redis同步数据到硬盘的间隔就是几分钟,所以开始怀疑是Redis引起的.于是加了一台服务器,把Redis单独放在那里,发现网站瞬间快了,502问题也不再出

redis持久化与可用性

redis对于持久化有快照及aof日志文件两种形式. 快照db文件,优点是二进制,大小比aof日志文件小.但会丢失最后一次成功备份时间到down机时间的数据. aof相比而言文件大小就大了点,但相对快照来讲,不大容易丢失文件. 目前redis检查数据文件是否有错对于快照及aof都能够支持,但修复则只对aof文件有效. 快照文件每次备份都是全量备份,原理是先fork出一个子进程,父子进程共享数据域.接着子进程开始将共享数据域中的数据写入到一个临时文件,写完之后原子性的替换掉原先的备份db文件.如果

Redis使用详细教程

原文:http://www.cnblogs.com/wangyuyu/p/3786236.html 视频教程: http://edu.csdn.net/course/detail/2126/33342?auto_start=1 ---------------------------------------------------------------------------------------------- 一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 ***