leveldb
Version, currently 0.2.02 versions
- 0.2.0latestOct 2, 2018
- 0.1.0not indexedMar 6, 2020
github.com/crystal-community/leveldb
Crystal binding for LevelDB
40 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
leveldb:
github: crystal-community/leveldb
version: ~> 0.2.0Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- Sergey Potapov <blake131313@gmail.com>
Dependencies
This version declares no dependencies.
Documentation
Generated from the source of the current release. The first visit to a release that has never been documented starts its build.
README
# LevelDB <img src="https://raw.githubusercontent.com/crystal-community/leveldb/master/images/crystal-leveldb-logo2.png" alt="crystal levedb" width="48">
Crystal binding for [LevelDB](https://github.com/google/leveldb).
[](https://travis-ci.org/crystal-community/leveldb)
> LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
## Installation
### Prerequisites
Debian:
```
sudo apt-get install libleveldb-dev libleveldb1v5 libsnappy1v5
```
### shard.yml
```yaml
dependencies:
leveldb:
github: "crystal-community/leveldb"
version: "~> 0.2.0"
```
## Usage
### Basic usage
```crystal
require "leveldb"
# Create DB (if does not exist yet) and open
db = LevelDB::DB.new("./db")
# Put, get, delete
db.put("name", "Sergey")
db.get("name") # => "Sergey"
db.delete("name")
db.get("name") # => nil
# [], []= methods work the same
db["city"] = "Berlin"
db["city"] # => "Berlin"
# Iterate through all the keys
db.each do |key, val|
puts "#{key} = #{val}"
end
# Close database
db.close
db.closed? # => true
db.opened? # => false
# Close the database and remove all the data
db.destroy
# Remove all the keys, keep the database open
db.clear
```
### Batches
> Apply a atomic batch of of operation to the key-value store.
```crystal
require "leveldb"
db = LevelDB::DB.new("./db")
begin
batch = LevelDB::Batch.new
batch.put("name","Martin")
batch.put("age","25")
batch.put("location","Bariloche")
batch.delete("age")
# write batch to the db in atomic way
db.write(batch)
puts db.get("name")
puts db.get("age") # nil
puts db.get("location")
ensure
# free memory
batch.destroy
# close the database
db.close
end
```
### Snapshots
> Snapshots provide consistent read-only views over the entire state of the key-value store.
```crystal
db = LevelDB::DB.new("./db")
db.put("a", "1")
db.get("a") # => "1"
snapshot = db.create_snapshot
db.delete("a")
db.get("a") # => nil
db.set_snapshot(snapshot)
db.get("a") # => "1"
db.unset_snapshot
db.get("a") # => nil
```
## Performance
There is performance comparison of LevelDB and other stores from
[Kiwi](https://github.com/greyblake/crystal-kiwi#performance-porn) project.

## Contributors
- [greyblake](https://github.com/greyblake) Sergey Potapov - creator, maintainer
- [twisterghost](https://github.com/twisterghost) Michael Barrett
Links
This release
- Version
0.2.0- Tagged
- Oct 2, 2018
- Commit
d09e02d16af7- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/crystal-community/leveldb
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 2