func (kv *SafeRkv) ExportJSON(w io.Writer) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.ExportJSON(w)
}
ExportJSON same as Rkv function but goroutine friendly.
package rkv
import (
	"io"
	"sync"
)
type SafeRkv struct {
	Rkv
	mu sync.Mutex
}
var _ Interface = (*SafeRkv)(nil)
func NewSafe(filename string) (*SafeRkv, error) {
	kv, err := New(filename)
	return &SafeRkv{Rkv: *kv}, err
}
func (kv *SafeRkv) Compact() error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.Compact()
}
func (kv *SafeRkv) Put(key string, value interface{}) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.Put(key, value)
}
func (kv *SafeRkv) PutForDays(key string, value interface{}, days int32) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.PutForDays(key, value, days)
}
func (kv *SafeRkv) Exist(key string) bool {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.Exist(key)
}
func (kv *SafeRkv) Get(key string, value interface{}) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.Get(key, value)
}
func (kv *SafeRkv) GetBytes(key string) ([]byte, error) {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.GetBytes(key)
}
func (kv *SafeRkv) Delete(key string) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.Delete(key)
}
func (kv *SafeRkv) DeleteAllKeys(with string) error {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.DeleteAllKeys(with)
}
func (kv *SafeRkv) GetKeys(with string, limit int) []string {
	kv.mu.Lock()
	defer kv.mu.Unlock()
	return kv.Rkv.GetKeys(with, limit)
}