千万级数据分钟级入库脚本PG2Redis

工作中常常需要将重要高频数据放入redis中供使用,如下方法是最便捷最快速的方式。

已验证过

1.将数据库数据批量导出为文件,如txt

dataredis.txt文件中数据的存放格式要求比较严格,换行符必须使用“\r\n”,数据格式如:

*3
$3
SET
$9
susantest
$4
test

数据内容的解释:

*3 表示有三个参数:SET susantest test
$3 对第一个参数SET计算长度得到的值
SET redis的执行数据操作的命令
$9 对第二个参数(susantest)计算得到的长度
susantest 存放数据的KEY
$4 对第三个参数计算得到的长度
test KEY对应的value值

2.将数据库内容导出为特定格式的文本

#!/bin/bash

export PGPASSWORD=postgres

psql -h 192.168.1.67 -U postgres -d sdx -t -A -c "SELECT '*3'||chr(10)||'$'||LENGTH('SET')||chr(10)||'SET'||chr(10)||'$'||LENGTH(code)||chr(10)||code||chr(10)||'$'||LENGTH (uuid)||chr(10)||uuid||chr(10) FROM shop where shop_source='my'" >>format2redis.txt

3.在linux机器上执行脚本

cat format2redis.txt | redis-cli -h 192.168.1.67 -c -p 6379 -n 2 --pipe &

redis-cli参数:

-n 选择database

(100多万数据5秒左右入redis,redis-cli为redis 2.4.14版本后出的)