17
17
package com .moilioncircle .examples .migration ;
18
18
19
19
import static redis .clients .jedis .Protocol .Command .AUTH ;
20
- import static redis .clients .jedis .Protocol .Command .RESTORE ;
21
20
import static redis .clients .jedis .Protocol .Command .SELECT ;
22
21
import static redis .clients .jedis .Protocol .toByteArray ;
23
22
40
39
import com .moilioncircle .redis .replicator .event .EventListener ;
41
40
import com .moilioncircle .redis .replicator .rdb .datatype .DB ;
42
41
import com .moilioncircle .redis .replicator .rdb .dump .DumpRdbVisitor ;
42
+ import com .moilioncircle .redis .replicator .rdb .dump .datatype .DumpFunction ;
43
43
import com .moilioncircle .redis .replicator .rdb .dump .datatype .DumpKeyValuePair ;
44
44
import com .moilioncircle .redis .replicator .util .Strings ;
45
45
46
46
import redis .clients .jedis .DefaultJedisClientConfig ;
47
47
import redis .clients .jedis .HostAndPort ;
48
48
import redis .clients .jedis .Jedis ;
49
49
import redis .clients .jedis .Protocol ;
50
+ import redis .clients .jedis .args .FunctionRestorePolicy ;
51
+ import redis .clients .jedis .params .RestoreParams ;
50
52
51
53
/**
52
54
* @author Leon Chen
@@ -84,6 +86,15 @@ public static void sync(String sourceUri, String targetUri) throws IOException,
84
86
r .addEventListener (new EventListener () {
85
87
@ Override
86
88
public void onEvent (Replicator replicator , Event event ) {
89
+
90
+ // function since redis 7.0
91
+ if (event instanceof DumpFunction ) {
92
+ DumpFunction dfn = (DumpFunction ) event ;
93
+ Object r = target .restoreFunction (dfn .getSerialized (), true );
94
+ System .out .println (r );
95
+ }
96
+
97
+ // key value
87
98
if (event instanceof DumpKeyValuePair ) {
88
99
DumpKeyValuePair dkv = (DumpKeyValuePair ) event ;
89
100
// Step1: select db
@@ -107,6 +118,7 @@ public void onEvent(Replicator replicator, Event event) {
107
118
}
108
119
}
109
120
121
+ // incremental commands
110
122
if (event instanceof DefaultCommand ) {
111
123
// Step3: sync aof command
112
124
DefaultCommand dc = (DefaultCommand ) event ;
@@ -255,9 +267,17 @@ public Object send(final byte[] cmd, final byte[]... args) {
255
267
256
268
public Object restore (byte [] key , long expired , byte [] dumped , boolean replace ) {
257
269
if (!replace ) {
258
- return send (RESTORE , key , toByteArray (expired ), dumped );
270
+ return jedis .restore (key , expired , dumped );
271
+ } else {
272
+ return jedis .restore (key , expired , dumped , RestoreParams .restoreParams ().replace ());
273
+ }
274
+ }
275
+
276
+ public Object restoreFunction (byte [] dumped , boolean replace ) {
277
+ if (!replace ) {
278
+ return jedis .functionRestore (dumped , FunctionRestorePolicy .APPEND );
259
279
} else {
260
- return send ( RESTORE , key , toByteArray ( expired ), dumped , "REPLACE" . getBytes () );
280
+ return jedis . functionRestore ( dumped , FunctionRestorePolicy . REPLACE );
261
281
}
262
282
}
263
283
0 commit comments