A reliable key-value storage for modern software

Overview

Quick-KV

A reliable key-value storage for modern software

Features

  • Binary Based Data-Store
  • Serde Supported Data Types
  • Thread Safe

Documentation | Crates.io | Github

Installation

cargo add quick-kv

Examples

use quick_kv::prelude::*;

fn main() -> anyhow::Result<()>
{
    let mut client = QuickClient::<String>::new(None);

    client.get("star this repo")?;

    Ok(())
}

CLI (Beta)

Quick-KV comes with a REPL for interacting with the database.

To install the CLI, run the following command:

cargo install quick-kv

This is different from the cargo add command because it installs the CLI globally allowing you to use it as a executable.

Comments
  • Update Rust crate time to ^0.3.29

    Update Rust crate time to ^0.3.29

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | time (source) | dependencies | patch | ^0.3.16 -> ^0.3.29 |


    Release Notes

    time-rs/time (time)

    v0.3.29

    Compare Source

    Added
    • Niche value optimization for Date has been added. Both Date and Option<Date> are four bytes.

    • Unit conversions have been added. It is now possible to write Second::per(Day), which returns the number of seconds in one day. See the types in the [time::convert module][time::convert module] for more information.

    Changed
    • The diagnostic for --cfg unsound_local_offset has been removed.
    • #![feature(no_coverage)] was previously used internally for code coverage. It is no longer used, so it has been removed.
    • The default value for modifier::OffsetHour has been changed. This was unintentionally changed in v0.3.17 and went unnoticed until now. The sign is now only present if needed by default, as was the case previously. This does not affect any situation where format_description! or format_description::parse is used.
    Fixed
    • Adding or subtracting a std::time::Duration to/from an OffsetDateTime will not result in integer overflow internally. It will still panic if the result is out of range.

    v0.3.28

    Compare Source

    Added
    • More additional constants for the well-known Iso8601 format description have been added. This avoids the need to manually configure the format.
    • An [end] component has been added. This is ignored during formatting, but is used to indicate the end of input when parsing. If any input remains after this component, an error is returned. This is useful when using the [first] component, as it avoids the need to reorder variants.
    Changed
    • The exemption for MacOS introduced in 0.3.20 has been removed. This is because some supported versions of MacOS do not meet the requirements for the exemption.
    • The UnexpectedTrailingCharacters error variant has been moved to ParseFromDescription. All previously-existing locations of this variant have been deprecated and will no longer be returned.

    v0.3.27

    Compare Source

    This sets the serde dependency requirement to >= 1.0.184 where the binaries have been removed.

    v0.3.26

    Compare Source

    This release contains only a single change. serde is required to be a version prior to 1.0.171. This is due to the decision by the maintainer of serde to include pre-built binaries that are executed without the end user's knowledge. As of the time of publishing, the included binary has not even been reproduced. This is a security risk, and the time project strongly opposes this decision. While this may break some users' builds due to conflicting versions, it is a necessary step to ensure the security.

    v0.3.25

    Compare Source

    Fixed
    • Methods such as Time::replace_milliseconds would panic on some out-of-range values. This has been fixed.

    v0.3.24

    Compare Source

    Added
    • The subsecond component is taken into account when parsing the unix_timestamp component. If data is conflicting, the subsecond value takes precedence.
    • Parsing a Time with only the hour component is now supported. The minute and second, and subsecond components are assumed to be zero.
    Changed
    • The minimum supported Rust version is now 1.67.0.
    • The debug output for Parsed has been improved.
    • When parsing, invalid values are now rejected sooner. Previously, the entire input would be parsed before being rejected in the final step. Now, invalid values are rejected as soon as they are encountered. This affects the error variant returned, which may cause minor breakage for any code (incorrectly) relying on the exact error variant.
    • When parsing a Time, an error is returned if components are present but not consecutive. For example, if hours and seconds are present, minutes will not be assumed to be zero.
    Fixed
    • The implementation of Duration::checked_div could return a slightly incorrect result in some cases. This has been fixed.

    v0.3.23

    Compare Source

    Added
    • Date::next_occurrence
    • Date::prev_occurrence
    • Date::nth_next_occurrence
    • Date::nth_prev_occurrence
    • Weekday::nth_prev
    • Month::nth_next
    • Month::nth_prev
    Changed

    The minimum supported Rust version policy has been updated. See the README for details.

    Fixed
    • Duration::abs correctly returns Duration::MAX when near the minimum value. The nanoseconds value was previously incorrect.
    • Compliance with ISO 8601 has been improved. Previously, a UTC offset would be incorrectly rejected in some cases.

    v0.3.22

    Compare Source

    Added
    • OffsetDateTime::checked_to_offset

    v0.3.21

    Compare Source

    Added
    • Any formattable/parsable type can now be used with the time::serde::format_description! macro.
    • Weekday::nth_next
    Changed
    • The minimum supported Rust version is now 1.65.0.

    v0.3.20

    Compare Source

    Changed
    • The minimum supported Rust version is now 1.63.0.
    • On Unix-based operating systems with known thread-safe environments, functions obtaining the local offset no longer require a check that the program is single-threaded. This currently includes MacOS, illumos, and NetBSD.
    Added
    • [ignore] component in format descriptions. A count modifier is required, indicating the number of bytes to ignore when parsing.
    • [unix_timestamp] component in format descriptions. This is currently only usable with OffsetDateTime. Users can choose between seconds, milliseconds, microseconds, and nanoseconds, and whether the sign is mandatory or optional.
    Fixed
    • The API for declaring soundness now uses stricter atomic orderings internally.

    v0.3.19

    Compare Source

    Fixed

    This includes the update to the format_description! macro, which was supposed to be included in 0.3.18.

    v0.3.18

    Compare Source

    Changed
    • The minimum supported Rust version is now 1.62.0.
    Added
    • [first] and [optional] items can now be included in format descriptions. To parse this at runtime, you must use the format_description::parse_owned method.
    • format_description::parse_borrowed
    • An API has been added to opt out of soundness checks for obtaining the local offset. This replaces the previous, officially unsupported RUSTFLAGS="--cfg unsound_local_offset". End users may call time::util::local_offset::set_soundness(time::util::local_offset::Soundness::Unsound). This method is unsafe because it enables undefined behavior if its safety requirements are not upheld. Note that libraries must not set this to Unsound, as it is impossible for a library to guarantee end users uphold the required invariants.
    Fixed
    • Correctly parse offset sign when hour is zero. The parse was previously unconditionally positive, even if the sign indicated otherwise.
    • Compilation is fixed for WebAssembly.

    v0.3.17

    Compare Source

    Changed
    • The amount of code generated by time::serde::format_description! is reduced if not all feature flags are active.
    • cargo test --tests works with any configuration of feature flags. This occurs by spawning a subprocess that passes --all-features. cargo test --doc works with most combinations of feature flags, including the default. The combination of these changes means that crater will now run on time.
    • libc and num_threads are only included as dependencies when needed. They were previously unconditionally included.
    Added
    • time::format_description::parse_owned, which returns an OwnedFormatItem. This avoids "lifetime hell", where all your structs now need a lifetime because a single field has one. Note that when possible, the borrowed format item (just called FormatItem) is still preferred, as it has significantly fewer allocations. The new OwnedFormatItem is usable for both formatting and parsing, as you would expect.
    Compatibility
    • The parser for runtime format descriptions has been rewritten. A side effect of this is that some errors have slightly changed. No existing API has been altered, so this is not a breaking change. However, you may notice different errors, which are hopefully better! The parser for compile-time format descriptions has not yet been swapped out. If you notice any bugs, please file an issue.

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update actions/checkout action to v4

    Update actions/checkout action to v4

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | major | v3 -> v4 |


    Release Notes

    actions/checkout (actions/checkout)

    v4

    Compare Source


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Configure Renovate

    Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • Cargo.toml (cargo)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Show all Merge Confidence badges for pull requests.
    • Enable Renovate Dependency Dashboard creation.
    • Use semantic commit type fix for dependencies and chore for all others if semantic commits are in use.
    • Ignore node_modules, bower_components, vendor and various test/tests directories.
    • Group known monorepo packages together.
    • Use curated list of recommended non-monorepo package groupings.
    • Apply crowd-sourced package replacement rules.
    • Apply crowd-sourced workarounds for known problems with packages.

    πŸ”‘ Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update Rust crate time to ^0.3.30

    Update Rust crate time to ^0.3.30

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | time (source) | dependencies | patch | ^0.3.29 -> ^0.3.30 |


    Release Notes

    time-rs/time (time)

    v0.3.30

    Compare Source

    Added
    • powerfmt::smart_display::SmartDisplay has been added for the main types in the library. These implementations ensure that values follow the requested fill, width, and alignment when using format! or similar macros. Display is implemented in terms of SmartDisplay.
    Fixed
    • Large values no longer wrap around in release mode when using NumericalDuration or NumericalStdDuration.

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update Rust crate serde to 1.0.189

    Update Rust crate serde to 1.0.189

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | serde (source) | dependencies | patch | 1.0.188 -> 1.0.189 |


    Release Notes

    serde-rs/serde (serde)

    v1.0.189

    Compare Source

    • Fix "cannot infer type" error when internally tagged enum contains untagged variant (#​2613, thanks @​ahl)

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    cargo
    Cargo.toml
    • bincode 1.3.3
    • serde 1.0.188
    • rayon 1.8.0
    • simple_logger 4.2.0
    • time ^0.3.29
    • log 0.4.20
    • anyhow 1.0.75
    • rustc-hash 1.1.0
    • chrono 0.4.31
    • clap 4.4.6
    • tempfile 3.8.0
    • criterion 0.5.1
    • rand 0.8.5
    github-actions
    .github/workflows/rust.yml
    • actions/checkout v4

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
Owner
Professional Spaghetti-coder | Bug enthusiast | Rust & TypeScriptπŸŽ―πŸ’™
null
A reconciliation service to sync a key-value map over multiple instances.

reconcile-rs Docs This crate provides a key-data map structure HRTree that can be used together with the reconciliation Service. Different instances c

Akvize 3 Nov 8, 2023
Dynamic, Type-Erased Key-Value Maps in Rust

Dynamic Objects in Rust Do you love Rust but are tired of being constrained by static typing when you need a map to hold values of different types? Do

Travis A. Wagner 12 Feb 25, 2024
HTTP client/libcurl TUI front end in Rust, with request + key storage

Rust TUI HTTP Client with API Key Management This project is still in active development and although it is useable, there may still be bugs and signi

Preston Thorpe 23 Nov 9, 2023
Voila is a domain-specific language launched through CLI tool for operating with files and directories in massive amounts in a fast & reliable way.

Voila is a domain-specific language designed for doing complex operations to folders & files. It is based on a CLI tool, although you can write your V

Guillem Jara 86 Dec 12, 2022
Easy, Simple, Clean. Making status bars reliable and up-to-date.

Simple Status Easy, Simple, Clean. Making status bars reliable and up-to-date. Installation Compiling simple_status yourself doesn't require much. Ins

James Butcher 5 Aug 1, 2022
A truly zero-dependency crate providing quick, easy, reliable, and scalable access to the name "jordin"

jordin Finally! A truly zero-dependency crate providing quick, easy, reliable, and scalable access to the name "jordin". Additionally, this one-of-a-k

jordin 2 Aug 4, 2022
Valq - macros for querying and extracting value from structured data by JavaScript-like syntax

valq   valq provides a macro for querying and extracting value from structured data in very concise manner, like the JavaScript syntax. Look & Feel: u

Takumi Fujiwara 24 Dec 21, 2022
Execute Javascript code in the Dioxus, and get the return value ( for Dioxus )

Golde Dioxus Execute Javascript code in the Dioxus, and get the return value. This demo can help use Javascript to calc the + operator formula. use di

YuKun Liu 15 Dec 27, 2022
A crate providing a MemoryCell struct, which stores a current and previous value.

memcell What is a MemoryCell? A MemoryCell is a struct containing both a current and optional previous value. Definition #[derive(Debug, Clone)] pub s

Imajin 9 Nov 21, 2022
This project returns Queried value from SOAP(XML) in form of JSON.

About This is project by team SSDD for HachNUThon (TechHolding). This project stores and allows updating SOAP(xml) data and responds to various querie

Sandipsinh Rathod 3 Apr 30, 2023
An event replay tool for the Trento storage backend.

photofinish - a little, handy tool to replay events This tiny CLI tool aims to fulfill the need to replay some events and get fixtures. Photofinish re

null 5 Nov 10, 2022
Single File Assets is a file storage format for images

SFA (Rust) Single File Assets is a file storage format for images. The packed images are not guaranteed to be of same format because the format while

null 1 Jan 23, 2022
Databento Binary Encoding (DBZ) - Fast message encoding and storage format for market data

dbz A library (dbz-lib) and CLI tool (dbz-cli) for working with Databento Binary Encoding (DBZ) files. Python bindings for dbz-lib are provided in the

Databento, Inc. 15 Nov 4, 2022
A simple command line program to upload file or directory to web3.storage with optional encryption and compression

w3s-cli A simple command line program to upload file or directory to web3.storage with optional encryption and compression. Features Uploads single fi

qdwang 5 Oct 22, 2022
An apocalypse-resistant data storage format for the truly paranoid.

Carbonado An apocalypse-resistant data storage format for the truly paranoid. Designed to keep encrypted, durable, compressed, provably replicated con

diba-io 30 Dec 29, 2022
Mirroring remote repositories to s3 storage, with atomic updates and periodic garbage collection.

rsync-sjtug WIP: This project is still under development, and is not ready for production use. rsync-sjtug is an open-source project designed to provi

SJTUG 57 Feb 22, 2023
ISG lets you use YouTube as cloud storage for ANY files, not just video

I was working on this instead of my finals, hope you appreciate it. I'll add all relevant executables when I can Infinite-Storage-Glitch AKA ISG (writ

HistidineDwarf 3.6k Feb 23, 2023
Tool and framework for securely reading untrusted USB mass storage devices.

usbsas is a free and open source (GPLv3) tool and framework for securely reading untrusted USB mass storage devices. Description Following the concept

CEA IT Security 250 Aug 16, 2023
mdBook is a utility to create modern online books from Markdown files.

Create book from markdown files. Like Gitbook but implemented in Rust

The Rust Programming Language 11.6k Jan 4, 2023