opt: introducing Options.BlockCacheSize
diff --git a/leveldb/opt/options.go b/leveldb/opt/options.go
index dea86ff..0798b87 100644
--- a/leveldb/opt/options.go
+++ b/leveldb/opt/options.go
@@ -136,9 +136,14 @@
// BlockCache provides per-block caching for LevelDB. Specify NoCache to
// disable block caching.
//
- // By default LevelDB will create LRU-cache with capacity of 8MiB.
+ // By default LevelDB will create LRU-cache with capacity of BlockCacheSize.
BlockCache cache.Cache
+ // BlockCacheSize defines the capacity of the default 'block cache'.
+ //
+ // The default value is 8MiB.
+ BlockCacheSize int
+
// BlockRestartInterval is the number of keys between restart points for
// delta encoding of keys.
//
@@ -322,6 +327,13 @@
return o.BlockCache
}
+func (o *Options) GetBlockCacheSize() int {
+ if o == nil || o.BlockCacheSize <= 0 {
+ return DefaultBlockCacheSize
+ }
+ return o.BlockCacheSize
+}
+
func (o *Options) GetBlockRestartInterval() int {
if o == nil || o.BlockRestartInterval <= 0 {
return DefaultBlockRestartInterval
diff --git a/leveldb/options.go b/leveldb/options.go
index 1c63e1a..3928cd1 100644
--- a/leveldb/options.go
+++ b/leveldb/options.go
@@ -35,7 +35,7 @@
// Block cache.
switch o.GetBlockCache() {
case nil:
- no.BlockCache = cache.NewLRUCache(opt.DefaultBlockCacheSize)
+ no.BlockCache = cache.NewLRUCache(o.GetBlockCacheSize())
case opt.NoCache:
no.BlockCache = nil
}