Go to file
Peter Dillinger bb87164db3 Fork and simplify LRUCache for developing enhancements (#9917)
Summary:
To support a project to prototype and evaluate algorithmic
enhancments and alternatives to LRUCache, here I have separated out
LRUCache into internal-only "FastLRUCache" and cut it down to
essentials, so that details like secondary cache handling and
priorities do not interfere with prototyping. These can be
re-integrated later as needed, along with refactoring to minimize code
duplication (which would slow down prototyping for now).

Pull Request resolved: https://github.com/facebook/rocksdb/pull/9917

Test Plan:
unit tests updated to ensure basic functionality has (likely)
been preserved

Reviewed By: anand1976

Differential Revision: D35995554

Pulled By: pdillinger

fbshipit-source-id: d67b20b7ada3b5d3bfe56d897a73885894a1d9db
2022-05-03 12:32:02 -07:00
.circleci
.github/workflows
buckifier
build_tools
cache Fork and simplify LRUCache for developing enhancements (#9917) 2022-05-03 12:32:02 -07:00
cmake
coverage
db Fork and simplify LRUCache for developing enhancements (#9917) 2022-05-03 12:32:02 -07:00
db_stress_tool Allow consecutive SingleDelete() in stress/crash test (#9930) 2022-05-02 16:19:00 -07:00
docs
env Fix bug in async_io path which reads incorrect length (#9916) 2022-04-27 22:33:29 -07:00
examples
file Fix bug in async_io path which reads incorrect length (#9916) 2022-04-27 22:33:29 -07:00
fuzz
include/rocksdb Fix a bug of CompactionIterator/CompactionFilter using `Delete` (#9929) 2022-05-02 13:25:45 -07:00
java
logging
memory
memtable
microbench
monitoring
options
plugin
port
table Eliminate unnecessary (slow) block cache Ref()ing in MultiGet (#9899) 2022-04-26 21:59:24 -07:00
test_util Enforce the contract of SingleDelete (#9888) 2022-04-28 14:48:27 -07:00
third-party
tools Make --benchmarks=flush flush the default column family (#9887) 2022-05-03 09:37:49 -07:00
trace_replay
util Eliminate unnecessary (slow) block cache Ref()ing in MultiGet (#9899) 2022-04-26 21:59:24 -07:00
utilities Remove ifdef for try_emplace after upgrading to c++17 (#9932) 2022-05-02 19:39:24 -07:00
.clang-format
.gitignore
.lgtm.yml
.travis.yml
.watchmanconfig
AUTHORS
CMakeLists.txt Fork and simplify LRUCache for developing enhancements (#9917) 2022-05-03 12:32:02 -07:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md
COPYING
DEFAULT_OPTIONS_HISTORY.md
DUMP_FORMAT.md
HISTORY.md Fix a bug of CompactionIterator/CompactionFilter using `Delete` (#9929) 2022-05-02 13:25:45 -07:00
INSTALL.md
LANGUAGE-BINDINGS.md
LICENSE.Apache
LICENSE.leveldb
Makefile
PLUGINS.md
README.md
ROCKSDB_LITE.md
TARGETS Fork and simplify LRUCache for developing enhancements (#9917) 2022-05-03 12:32:02 -07:00
USERS.md
Vagrantfile
WINDOWS_PORT.md
crash_test.mk Fix db_crashtest.py call inconsistency in crash_test.mk (#9935) 2022-05-03 12:03:57 -07:00
issue_template.md
python.mk
src.mk Fork and simplify LRUCache for developing enhancements (#9917) 2022-05-03 12:32:02 -07:00
thirdparty.inc

README.md

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

CircleCI Status TravisCI Status Appveyor Build status PPC64le Build Status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key-value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it especially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Questions and discussions are welcome on the RocksDB Developers Public Facebook group and email list on Google Groups.

License

RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.