Description
PickleDB is a lightweight and simple key-value store written in Rust, heavily inspired by Python's PickleDB
PickleDB alternatives and similar packages
Based on the "NoSQL" category.
Alternatively, view PickleDB alternatives based on common mentions on social networks and blogs.
-
cdrs
Cassandra DB native client written in Rust language. Find 1.x versions on https://github.com/AlexPikalov/cdrs/tree/v.1.x Looking for an async version? - Check WIP https://github.com/AlexPikalov/cdrs-async -
rust-zookeeper
Pure Rust library for Apache ZooKeeper built on MIO -
cassandra-rs
Cassandra (CQL) driver for Rust, using the DataStax C/C++ driver under the covers. -
elastic-hyper
a lightweight implementation of the Elasticsearch API based on Hyper
Static code analysis for 29 languages.
Do you think we are missing an alternative of PickleDB or a related project?
README
PickleDB
PickleDB is a lightweight and simple key-value store written in Rust, heavily inspired by Python's PickleDB
PickleDB is fun and easy to use
use pickledb::{PickleDb, PickleDbDumpPolicy, SerializationMethod};
fn main() {
// create a new DB with AutoDump (meaning every change is written to the file)
// and with Json serialization (meaning DB will be dumped to file as a Json object)
let mut db = PickleDb::new("example.db", PickleDbDumpPolicy::AutoDump, SerializationMethod::Json);
// set the value 100 to the key 'key1'
db.set("key1", &100).unwrap();
// print the value of key1
println!("The value of key1 is: {}", db.get::<i32>("key1").unwrap());
// load the DB from the same file
let db2 = PickleDb::load("example.db", PickleDbDumpPolicy::DumpUponRequest, SerializationMethod::Json).unwrap();
// print the value of key1
println!("The value of key1 as loaded from file is: {}", db2.get::<i32>("key1").unwrap());
}
Installation
This crate works with Cargo and can be found in crates.io
Add this to your Cargo.toml
:
[dependencies]
pickledb = "0.5.1"
Documentation
All documentation for this crate can be found in docs.rs
Examples
There are currently two examples shipped with PickleDB:
- Hello World which shows the basic usage of PickleDB: create a new DB, load a DB from file, get/set key-value pairs of different types, and more
- Lists which shows how to use lists in PickleDB: create new lists, add/remove items from lists, retrieve items from lists, remove lists, and more
Changelog
Version 0.5.1
- Bugfix: Add missing JSON feature gate
Version 0.5.0
- Turn on/off file formats with features
DumpUponRequest
policy no longer dumps onDrop
- (internal) Switch CI from TravisCI to GitHub Actions
Version 0.4.1
- Bump up dependencies versions to fix vulnerabilities found in few of them
Version 0.4.0
- Changed all doc tests from
ignore
tono_run
so generated docs don't contain untested warnings - Changed both instances of
lextend
to take iterators of references rather than a slice of values - Fixed bug in
load_test()
- Fixed rustfmt and clippy warnings
- Added examples to
Cargo.toml
to allow them to be run via Cargo
Version 0.3.0
- Added new serialization options. Now PickleDB supports JSON, Bincode, YAML and CBOR serializations
- Added proper error handling (Issue #3)
- Use
Path
andPathBuf
instead of strings to describe DB paths - Better organization of the code
Version 0.2.0
- Dump the DB to file in a crash-safe manner using a temp file (Thanks jamwt from Reddit for the tip: https://www.reddit.com/r/rust/comments/agumun/check_out_pickledb_a_lightweight_and_simple/ee987j0)
- Extend lists became easier and multiple calls to
lcreate()
,ladd()
andlextend()
can be chained - Added an iterator over keys and values in the DB
- Added an iterator over items in a list