@mirajobs Currently single-node with RDB snapshots and atomic fsync for durability not async replication. It auto-saves every 5 minutes by default and performs a final save on SIGTERM/SIGINT. Multi-node/replication support is currently in development :)
After completing @arpit_bhayaniโs Redis video series, I built FlashDB โ a lock-free, Redis-compatible database in Rust.
21.3M GET/s
15.7M SET/s
22.5M Pub/Sub/s
Single node Flash vs 6-node Redis Cluster.
๐ https://t.co/OcxYeFu9LQ
#Rust#Redis#Database#OpenSource
@ditsuke@arpit_bhayani Both FlashDB and Redis were running inside Docker containers on the same Linux machine, so the comparison uses the same containerized environment
@ditsuke@kakashii24 No, not yet. Fingerprinting could reduce pointer chasing, but FlashDBโs 64-bit hash already filters most false matches. Itโd also require major changes to the current atomic-pointer design. Worth benchmarking later :)
@KakaluoteW45042 Persistence favors Redis here: RDB/AOF are disabled, while FlashDB keeps periodic RDB snapshots (none during the test). Redis also uses 2,500-command pipelines vs 100 for FlashDB. So this is a throughput comparison, not durability.
Benchmark code: https://t.co/UVlxvpi5J5
@kakashii24 Itโs primarily based on the load factor. I chose 70% as the resize threshold for the open addressing table to keep probe lengths low. I also benchmarked around that range and found it to be a good trade-off between memory usage and lookup performance
@sarmag77@arpit_bhayani Mainly because FlashDB uses a multi-threaded, lock-free HashMap help of atomicptr, so readers and writers don't block each other on the hot path. I wrote a deep dive about the custom HashMap if you'd like to check it out - https://t.co/ReZMo9nUgy
@sabari_246 Thanks! You can give it a try, or check out this blog post about the custom concurrent hash map I built and use in FlashDB:
https://t.co/ReZMo9nUgy