最近开发的一个项目中,有一个需求,需要将内部现有的PG数据库中两张表中的数据同步到外部服务器的redis中去,而且以后每天都要形成一个增量的数据写入到外网的redis中,我尝试了两种方法:
1、直接通过PHP读取数据,循环的写入到Redis中去
2、使用redis-cli --pipe的方式写入
申明:外网不能访问内部的任何机器,两个表中的数据量有千万的数量级
方法一:PHP读取数据库写入到redis的方式
由于数据量比较大,一次查询出所有的数据写入到redis是不可能的,直接导致内存溢出,所以不得不根据id排序,然后通过偏移量一次查询3000多条,然后写入到redis中,最后在写入过程中我发现写入的速度太慢了,如果把这些数据全导入进去,我得耗费一天的时间;然后果断放弃了这个方法,采用了第二个方法
方法二:使用redis-cli --pipe的方式
首先介绍一下:这个命令从redis 2.4.14的版本后出现的,也是官方推荐的批量数据的导入方式,只要按照格式将需要导入的数据写入文件,直接在Linux上执行:
cat dataredis