@Override
    public void multiGet(final List<byte[]> keys, @SuppressWarnings("unused") final boolean readOnlySafe,
                         final KVStoreClosure closure) {
        final Timer.Context timeCtx = getTimeContext("MULTI_GET");
        final Lock readLock = this.readWriteLock.readLock();
        readLock.lock();
        try {
            final List<byte[]> rawList = this.db.multiGetAsList(keys);
            final Map<ByteArray, byte[]> resultMap = Maps.newHashMapWithExpectedSize(rawList.size());
            int index = 0;
            for (final byte[] value : rawList) {
                resultMap.put(ByteArray.wrap(keys.get(index)), value);
                index++;
            }
            setSuccess(closure, resultMap);
        } catch (final Exception e) {
            LOG.error("Fail to [MULTI_GET], key size: [{}], {}.", keys.size(), StackTraceUtil.stackTrace(e));
            setFailure(closure, "Fail to [MULTI_GET]");
        } finally {
            readLock.unlock();
            timeCtx.stop();
        }
    }
Local KV store based on RocksDB

@author dennis
@author jiachun.fjc
jraft-rheakv/rheakv-core/src/main/java/com/alipay/sofa/jraft/rhea/storage/RocksRawKVStore.java