7 releases (4 breaking)
0.5.1 | Apr 26, 2022 |
---|---|
0.5.0 | Apr 20, 2022 |
0.4.1 | Mar 29, 2020 |
0.4.0 | May 15, 2019 |
0.1.0 | Jan 16, 2019 |
#31 in Database implementations
44,080 downloads per month
Used in 20 crates
(19 directly)
79KB
887 lines
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
Dependencies
~0.3–1.4MB
~32K SLoC