Cache in RocksDB¶
The cache is used to store the latest used data in memory for fast searching.
0. LRU Cache¶
The LRU Cache in RocksDB implement O(1) Put/Get.The basic mechanism is putting by double-linked list and getting by hash map.
The basic data structure as below:
| LRUHandle* | prev
| LRUHandle* | ---> | LRUHandle | <-------------------------
| LRUHandle* | |next ^ ---------------------- |
| LRUHandle* | V |prev next | |
| LRUHandle* | -> | LRUHandle | V |
| LRUHandle* | | ---->| LRUHandle |
| LRUHandle* | --- prev | |
| LRUHandle* | ---------------------| |next
| LRUHandle* | | ---------------------------
| LRUHandle* | ---| | | ^
| | V |next next_hash(for collision)
--> | LRUHandle | ----------> | LRUHandle | ----->
So the RocksDB put(and evict) item by double-linked list and hash table, get item by hash table.