1 Star 0 Fork 47

Git_OSC / redis-replicator

forked from leonchen83 / redis-replicator 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ValueIterableRdbVisitor.java 8.42 KB
一键复制 编辑 原始数据 按行查看 历史
chenby 提交于 2019-04-10 10:43 . format
/*
* Copyright 2016-2018 Leon Chen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.moilioncircle.redis.replicator.rdb.iterable;
import com.moilioncircle.redis.replicator.Replicator;
import com.moilioncircle.redis.replicator.event.Event;
import com.moilioncircle.redis.replicator.io.RedisInputStream;
import com.moilioncircle.redis.replicator.rdb.BaseRdbParser;
import com.moilioncircle.redis.replicator.rdb.DefaultRdbVisitor;
import com.moilioncircle.redis.replicator.rdb.RdbValueVisitor;
import com.moilioncircle.redis.replicator.rdb.datatype.ContextKeyValuePair;
import com.moilioncircle.redis.replicator.rdb.datatype.KeyValuePair;
import com.moilioncircle.redis.replicator.rdb.datatype.ZSetEntry;
import com.moilioncircle.redis.replicator.rdb.iterable.datatype.KeyStringValueByteArrayIterator;
import com.moilioncircle.redis.replicator.rdb.iterable.datatype.KeyStringValueMapEntryIterator;
import com.moilioncircle.redis.replicator.rdb.iterable.datatype.KeyStringValueZSetEntryIterator;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_HASH;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_HASH_ZIPLIST;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_HASH_ZIPMAP;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_LIST;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_LIST_QUICKLIST;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_LIST_ZIPLIST;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_SET;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_SET_INTSET;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_2;
import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_ZIPLIST;
/**
* @author Leon Chen
* @since 2.3.0
*/
public class ValueIterableRdbVisitor extends DefaultRdbVisitor {
public ValueIterableRdbVisitor(Replicator replicator) {
this(replicator, new ValueIterableRdbValueVisitor(replicator));
}
public ValueIterableRdbVisitor(Replicator replicator, RdbValueVisitor valueParser) {
super(replicator, valueParser);
}
@Override
public Event applyList(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<byte[]>> o1 = new KeyStringValueByteArrayIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o1.setValueRdbType(RDB_TYPE_LIST);
o1.setKey(key);
o1.setValue(valueVisitor.applyList(in, version));
return context.valueOf(o1);
}
@Override
public Event applySet(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<byte[]>> o2 = new KeyStringValueByteArrayIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o2.setValueRdbType(RDB_TYPE_SET);
o2.setKey(key);
o2.setValue(valueVisitor.applySet(in, version));
return context.valueOf(o2);
}
@Override
public Event applyZSet(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<ZSetEntry>> o3 = new KeyStringValueZSetEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o3.setValueRdbType(RDB_TYPE_ZSET);
o3.setKey(key);
o3.setValue(valueVisitor.applyZSet(in, version));
return context.valueOf(o3);
}
@Override
public Event applyZSet2(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<ZSetEntry>> o5 = new KeyStringValueZSetEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o5.setValueRdbType(RDB_TYPE_ZSET_2);
o5.setKey(key);
o5.setValue(valueVisitor.applyZSet2(in, version));
return context.valueOf(o5);
}
@Override
public Event applyHash(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<Map.Entry<byte[], byte[]>>> o4 = new KeyStringValueMapEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o4.setValueRdbType(RDB_TYPE_HASH);
o4.setKey(key);
o4.setValue(valueVisitor.applyHash(in, version));
return context.valueOf(o4);
}
@Override
public Event applyHashZipMap(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<Map.Entry<byte[], byte[]>>> o9 = new KeyStringValueMapEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o9.setValueRdbType(RDB_TYPE_HASH_ZIPMAP);
o9.setKey(key);
o9.setValue(valueVisitor.applyHashZipMap(in, version));
return context.valueOf(o9);
}
@Override
public Event applyListZipList(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<byte[]>> o10 = new KeyStringValueByteArrayIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o10.setValueRdbType(RDB_TYPE_LIST_ZIPLIST);
o10.setKey(key);
o10.setValue(valueVisitor.applyListZipList(in, version));
return context.valueOf(o10);
}
@Override
public Event applySetIntSet(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<byte[]>> o11 = new KeyStringValueByteArrayIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o11.setValueRdbType(RDB_TYPE_SET_INTSET);
o11.setKey(key);
o11.setValue(valueVisitor.applySetIntSet(in, version));
return context.valueOf(o11);
}
@Override
public Event applyZSetZipList(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<ZSetEntry>> o12 = new KeyStringValueZSetEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o12.setValueRdbType(RDB_TYPE_ZSET_ZIPLIST);
o12.setKey(key);
o12.setValue(valueVisitor.applyZSetZipList(in, version));
return context.valueOf(o12);
}
@Override
public Event applyHashZipList(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<Map.Entry<byte[], byte[]>>> o13 = new KeyStringValueMapEntryIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o13.setValueRdbType(RDB_TYPE_HASH_ZIPLIST);
o13.setKey(key);
o13.setValue(valueVisitor.applyHashZipList(in, version));
return context.valueOf(o13);
}
@Override
public Event applyListQuickList(RedisInputStream in, int version, ContextKeyValuePair context) throws IOException {
BaseRdbParser parser = new BaseRdbParser(in);
KeyValuePair<byte[], Iterator<byte[]>> o14 = new KeyStringValueByteArrayIterator();
byte[] key = parser.rdbLoadEncodedStringObject().first();
o14.setValueRdbType(RDB_TYPE_LIST_QUICKLIST);
o14.setKey(key);
o14.setValue(valueVisitor.applyListQuickList(in, version));
return context.valueOf(o14);
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/Git_OSC/redis-replicator.git
git@gitee.com:Git_OSC/redis-replicator.git
Git_OSC
redis-replicator
redis-replicator
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891