以致轻易redis

作者: 数据库信息  发布:2019-11-21

(0)Redis-port原理:

先是是看看上面那篇文书档案开始钻探的redis-port

   简要截图如下:

图片 1

下边包车型大巴两点实乃兑现4个成效,在redis-port设置包README.md的文书档案中也会有介绍

图片 2

* **DECODE** dumped payload to human readable format (hex-encoding)

* **RESTORE** rdb file to target redis

* **DUMP** rdb file from master redis

* **SYNC** data from master to slave

静态深入分析中华VDB文件便是指:decode

浅析以致复苏SportageDB是指:restore

从redis上dumpRDB是指:dump

redis和codis同步数据是指:sync

 

进而依照README.md的布道看正是将redis-port以slave身份同步redis上的数额到codis

简书上建筑英才网DBA写了风流倜傥篇关于redis-port的运用小说非常受益,指路:

 

(1卡塔尔为便利看本身上边的文书档案,铺一下自己的布局景况如下:

 图片 3

 (2卡塔 尔(英语:State of Qatar)希图好redis上急需导入codis的数目

(保险key未有和codis封装的redis重复,有双重的就能够以新导入的redis上的为准,因为此地是再度解读rdb文件,原有的codis封装的某三个key会被调换掉卡塔 尔(阿拉伯语:قطر‎

此处的redis的多少准备本人是从mysql的test库中u_2表迁移上去的,

当然你能够协调在redis里面set,或然原来就有数量,作者那军机章京好介绍一下mysql----->redis的操作。

预备步骤如下。

 2.1卡塔尔思忖protocol,用redis的pipe把mysql的数额导进redis:

以此手续实际上是将mysql的字段拼接成redis能够读懂的protocol,

官方网址指路:英:   中:

[why@wyt1 scripts]$ vim mysql-to-redis.sql

[why@wyt1 scripts]$ cat mysql-to-redis.sql

select

   CONCAT('*3rn','$','3rn','SETrn',

          '$',LENGTH(empno), 'rn',empno,'rn',

          '$',LENGTH(ename), 'rn',ename, 'r'

          )

from test.u_2 ;

[why@wyt1 scripts]$

差非常的少的解释一下protocal:

*<参数数量> CHighlander LF
$<参数 1 的字节数量> C大切诺基 LF
<参数 1 的数据> CR LF
...
$<参数 N 的字节数量> C路虎极光 LF
<参数 N 的数据> CR LF

东挪西撮后应当是:

*3rn$3rnSETrn$LENGTH(empno)rnempnorn$LENGTH(ename)rnenamer

*3rn:是指3个参数即上面有多少个$,这里是set、empno、ename,其实正是SET KEY VALUE,假使是运用hset的授命正是*4,

背后的格式正是“$ 命令大概字段长度 ”。

2.2)使用redis的管道将mysql表中的数据迁移到redis

[why@wyt1 scripts]$ mysql -uroot -pwhy -P6666 -h192.168.6.10 -N --raw < /home/why/redis-3.0.7/scripts/mysql-to-redis.sql |/home/why/redis-3.0.7/src/redis-cli -a whyredis -h 192.168.6.11 -p 6001 --pipe

Warning: Using a password on the command line interface can be insecure.

All data transferred. Waiting for the last reply...

Last reply received from server.

errors: 0, replies: 14

(3卡塔 尔(阿拉伯语:قطر‎安装和接收redis-port

3.1)编译:

源码地址:

[why@wyt1 packages]$ unzip redis-port-master.zip -d /home/why/codis/application/codis/src/

[why@wyt1 packages]$ cd /home/why/codis/application/codis/src/

[why@wyt1 src]$ mv redis-port-master/ /home/why/codis/application/codis/src/github.com/CodisLabs/redis-port

此间怎么要改名字,因为编译的时候会找那几个目录,/home/why/codis/application/codis/src/github.com/CodisLabs/redis-port/pkg/

[why@wyt1 packages]$ cd /home/why/codis/application/codis/src/github.com/CodisLabs/

[why@wyt1 CodisLabs]$ cd redis-port/

[why@wyt1 redis-port]$ make

make: Warning: File `Makefile' has modification time 9.8e 05 s in the future

fatal: Not a git repository (or any of the parent directories): .git

go build -i -o bin/redis-port ./cmd

make: 警报:检查测量检验到机械钟错误。您的成立或许是不完全的。

 

忽略警示后开采bin目录已经济建设好里面有编写翻译好的redis-port,工具是能够平常使用的。

[why@wyt1 redis-port]$ ls

bin  cmd  Godeps  Makefile  MIT-LICENSE.txt  pkg  README.md  vendor  version  wandoujia_license.txt

[why@wyt1 redis-port]$ cd bin

[why@wyt1 bin]$ ls

redis-port  version

[why@wyt1 bin]$

 

3.2卡塔 尔(英语:State of Qatar)命令参数使用:

详见

Options

  • -n N, --ncpu=N

set runtime.GOMAXPROCS to N

  • -p M, --parallel=M

set number of parallel routines

  • -i INPUT, --input=INPUT

use INPUT as input file, or if it is not given, redis-port reads from stdin (means '/dev/stdin')

  • -o OUTPUT, --output=OUTPUT

use OUTPUT as output file, or if it is not given, redis-port writes to stdout (means '/dev/stdout')

  • -m MASTER, --master=MASTER

specify the master redis

  • -t TARGET, --target=TARGET

specify the slave redis (or target redis)

  • -P PASSWORD, --password=PASSWORD

specify the redis auth password

  • -A AUTH, --auth=AUTH

specify the auth password for target

  • -e, --extra

dump or restore following redis backlog commands

  • --redis

target is normal redis instance, default value is false.

  • --codis

target is codis proxy, default value is true.

  • --filterdb=DB

filter specifed db number, default value is '*'

 

或者是

[why@wyt1 bin]$ ./redis-port -h

Usage:

redis-port decode   [--ncpu=N]  [--parallel=M]  [--input=INPUT]  [--output=OUTPUT]

redis-port restore  [--ncpu=N]  [--parallel=M]  [--input=INPUT]  [--faketime=FAKETIME] [--extra] [--filterdb=DB] --target=TARGET [--auth=AUTH] [--redis|--codis]

redis-port sync     [--ncpu=N]  [--parallel=M]   --from=MASTER   [--password=PASSWORD] [--psync] [--filterdb=DB] --target=TARGET [--auth=AUTH] [--redis|--codis] [--sockfile=FILE [--filesize=SIZE]]

redis-port dump     [--ncpu=N]  [--parallel=M]   --from=MASTER   [--password=PASSWORD] [--extra] [--output=OUTPUT]

redis-port --version

 

Options:

-n N, --ncpu=N                    Set runtime.GOMAXPROCS to N.

-p M, --parallel=M                Set the number of parallel routines to M.

-i INPUT, --input=INPUT           Set input file, default is stdin ('/dev/stdin').

-o OUTPUT, --output=OUTPUT        Set output file, default is stdout ('/dev/stdout').

-f MASTER, --from=MASTER          Set host:port of master redis.

-t TARGET, --target=TARGET        Set host:port of slave redis.

-P PASSWORD, --password=PASSWORD  Set redis auth password.

-A AUTH, --auth=AUTH              Set auth password for target.

--faketime=FAKETIME               Set current system time to adjust key's expire time.

--sockfile=FILE                   Use FILE to as socket buffer, default is disabled.

--filesize=SIZE                   Set FILE size, default value is 1gb.

-e, --extra                       Set true to send/receive following redis commands, default is false.

--redis                           Target is normal redis instance, default is false.

--codis                           Target is codis proxy, default is true.

--filterdb=DB                     Filter db = DB, default is *.

--psync                           Use PSYNC command.

[why@wyt1 bin]$

能够见见redis-port朝气蓬勃共有4种接纳:decode、restore、dump、sync,这里大家用sync完结redis到codis

创办多个寄存输出日志的位置和文书

[why@wyt1 redis-port]$ mkdir log

[why@wyt1 redis-port]$ cd log

[why@wyt1 log]$ touch redis-to-codis.log

导入早前看一下现行反革命的组意气风发和组二的数目,group1上9个key,group2有9个key(纯属巧合哈卡塔 尔(英语:State of Qatar)

 图片 4

3.3)使用redis-port:

此地后台实行命令

 [why@wyt1 redis-port]$  nohup ./bin/redis-port sync --ncpu=1 --from=192.168.6.11:6001 --password=whyredis --target=192.168.6.11:19002 --auth=codiswyt >> /home/why/codis/application/codis/src/github.com/CodisLabs/redis-port/log/redis-to-codis.log  2>&1 &

[2] 58292

[why@wyt1 redis-port]$

看来日志redis-to-codis.log 输出如下:

图片 5

看看group1和group2中都导入了数额

图片 6

 

 可以查看一下,那么些过程是直接在专门的工作的

[why@wyt1 redis-port]$ ps -ef | grep redis-port|grep -v grep

why       58292  23483  2 09:44 pts/1    00:00:02 ./bin/redis-port sync --ncpu=1 --from=192.168.6.11:6001 --password=whyredis --target=192.168.6.11:19002 --auth=codiswyt

3.4)观察redis-port工作

只是风姿洒脱旦别同步的redis服务不断,redis-port的日志是直接在写的,

图片 7

当向redis继续插入数据时,能够见见log的输出变化,下图58那边

[why@wyt1 bin]$ ./redis-cli -a whyredis -p 6001

127.0.0.1:6001> get 11370

"SMITH"

127.0.0.1:6001> set idol tfboys

OK

127.0.0.1:6001> set monkey yyqx

OK

127.0.0.1:6001> set rabbit wjk

OK

127.0.0.1:6001> quit 

 图片 8

再同有时间多插入数据看看同步的动静,将mysql中的u_3表的多寡增加到codis

[why@wyt1 scripts]$ vim mysql-to-redis-u3.sql

[why@wyt1 scripts]$ cat mysql-to-redis-u3.sql

select

   CONCAT('*3rn','$','3rn','SETrn',

          '$',LENGTH(empno), 'rn',empno,'rn',

          '$',LENGTH(job), 'rn',job, 'r'

          )

from test.u_3 ;

[why@wyt1 scripts]$

[why@wyt1 scripts]$  mysql -uroot -pwhy -P6666 -h192.168.6.10 -N --raw < /home/why/redis-3.0.7/scripts/mysql-to-redis-u3.sql |/home/why/redis-3.0.7/src/redis-cli -a whyredis -h 192.168.6.11 -p 6001 --pipe

Warning: Using a password on the command line interface can be insecure.

All data transferred. Waiting for the last reply...

Last reply received from server.

errors: 0, replies: 14

[why@wyt1 scripts]$

看样子下图516的分外地方是出乎意料增添的。

图片 9

下一场停掉6001的redis,看一下redis-port是不是会活动断开,6001的正规关闭

图片 10

曾经查不到redis-port的长河,[why@wyt1 redis-port]$ ps -ef | grep redis-port|grep -v grep

看一下redis-to-codis.log日志的出口:是error了,redis-port本身就停了

图片 11

 

导入u_2随后检查一下redis-port是固守crc32原理将redis数据导入多少个slot:

查源redis上的数额

[why@wyt1 redis-3.0.7]$ ./src/redis-cli -a whyredis -p 6001 -h 192.168.6.11

192.168.6.11:6001> keys *

 1) "11370"

 2) "11935"

 3) "11567"

 4) "11699"

 5) "11500"

 6) "11783"

 7) "11655"

 8) "11877"

 9) "11522"

10) "11901"

11) "11845"

12) "11789"

13) "11903"

192.168.6.11:6001>

看一下上面11个key布满在codis多个slot的状态

[why@wyt1 bin]$ ./redis-cli -a codiswyt -p 8002

127.0.0.1:8002> keys *

 1) "11522"

 2) "name"

 3) "7839"

 4) "11783"

 5) "7900"

 6) "11655"

 7) "birth"

 8) "7876"

 9) "11567"

10) "11370"

11) "11845"

12) "11935"

13) "11789"

14) "7499"

15) "gender"

16) "7902"

17) "7698"

127.0.0.1:8002> quit

[why@wyt1 bin]$ ./redis-cli -a codiswyt -p 7002 -h 192.168.6.10

192.168.6.10:7002> keys *

 1) "7788"

 2) "11877"

 3) "age"

 4) "11699"

 5) "11500"

 6) "11901"

 7) "11903"

 8) "7521"

 9) "7844"

10) "7566"

11) "7782"

12) "7934"

13) "7654"

14) "7369"

 

本文由金沙澳门官网发布于数据库信息,转载请注明出处:以致轻易redis

关键词: 金沙澳门官网