step0. 加互斥锁,ReentrantLock
step1. 写log
实现批量写操作的接口如下,因为一条log的格式如上,因此在put方法里,除了k-v的长度,还需要3个int (type+key length+value length),也就是12位byte的长度,delete因为不需要添加value信息,因此需要k的长度+2个 int (type+key length)
public class WriteBatchImpl
implements WriteBatch
{
private final List<Map.Entry<Slice, Slice>> batch = new ArrayList<>();
private int approximateSize;
public WriteBatchImpl put(Slice key, Slice value)
{
batch.add(Maps.immutableEntry(key, value));
approximateSize += 12 + key.length() + value.length();
return this;
}
public WriteBatchImpl delete(Slice key)
{
batch.add(Maps.immutableEntry(key