diff --git a/rocksdb/_rocksdb.pyx b/rocksdb/_rocksdb.pyx
index c72e826388b0e29a4d80c7e5d0cd2b70c5cf6c43..95422fcd1cd61503d3ee90543ded7e7c62f501b5 100644
--- a/rocksdb/_rocksdb.pyx
+++ b/rocksdb/_rocksdb.pyx
@@ -708,6 +708,7 @@ cdef class Options(object):
     cdef PySliceTransform py_prefix_extractor
     cdef PyTableFactory py_table_factory
     cdef PyMemtableFactory py_memtable_factory
+    cdef PyCache py_row_cache
 
     # Used to protect sharing of Options with many DB-objects
     cdef cpp_bool in_use
@@ -727,6 +728,7 @@ cdef class Options(object):
         self.py_prefix_extractor = None
         self.py_table_factory = None
         self.py_memtable_factory = None
+        self.py_row_cache = None
 
         for key, value in kwargs.items():
             setattr(self, key, value)
@@ -1210,6 +1212,21 @@ cdef class Options(object):
             self.py_prefix_extractor = PySliceTransform(value)
             self.opts.prefix_extractor = self.py_prefix_extractor.get_transformer()
 
+    property row_cache:
+        def __get__(self):
+            return self.py_row_cache
+
+        def __set__(self, value):
+            if value is None:
+                self.py_row_cache = None
+                self.opts.row_cache.reset()
+            elif not isinstance(value, PyCache):
+                raise Exception("row_cache must be a Cache object")
+            else:
+                self.py_row_cache = value
+                self.opts.row_cache = self.py_row_cache.get_cache()
+
+
 # Forward declaration
 cdef class Snapshot
 
diff --git a/rocksdb/options.pxd b/rocksdb/options.pxd
index ea1daafa848fff944e4a6df04a78b50353de4af3..aa404d18342b359162e16e55ce6d5b745c1cf2d2 100644
--- a/rocksdb/options.pxd
+++ b/rocksdb/options.pxd
@@ -13,6 +13,7 @@ from slice_transform cimport SliceTransform
 from table_factory cimport TableFactory
 from memtablerep cimport MemTableRepFactory
 from universal_compaction cimport CompactionOptionsUniversal
+from cache cimport Cache
 
 cdef extern from "rocksdb/options.h" namespace "rocksdb":
     ctypedef enum CompactionStyle:
@@ -105,6 +106,7 @@ cdef extern from "rocksdb/options.h" namespace "rocksdb":
         # TODO: table_properties_collectors
         cpp_bool inplace_update_support
         size_t inplace_update_num_locks
+        shared_ptr[Cache] row_cache
 
     cdef cppclass WriteOptions:
         cpp_bool sync
diff --git a/rocksdb/tests/test_options.py b/rocksdb/tests/test_options.py
index ce2ae527149bcd8a46cf9897ac127b9728be6e88..0f2c6d8d215e7b51ff518c435bd4ec3dc09904c2 100644
--- a/rocksdb/tests/test_options.py
+++ b/rocksdb/tests/test_options.py
@@ -96,3 +96,9 @@ class TestOptions(unittest.TestCase):
         self.assertEqual(1, uopts['size_ratio'])
         self.assertEqual(2, uopts['min_merge_width'])
         self.assertEqual(30, uopts['max_merge_width'])
+
+    def test_row_cache(self):
+        opts = rocksdb.Options()
+        self.assertIsNone(opts.row_cache)
+        opts.row_cache = cache = rocksdb.LRUCache(2*1024*1024)
+        self.assertEqual(cache, opts.row_cache)