Popularity
7.1
Declining
Activity
0.0
Stable
33
5
7
Programming language: Crystal
License: MIT License
Tags:
Database Drivers
Latest version: v0.5.1
rocksdb.cr alternatives and similar shards
Based on the "Database Drivers" category.
Alternatively, view rocksdb.cr alternatives based on common mentions on social networks and blogs.
Less time debugging, more time building
Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.
Promo
scoutapm.com
Do you think we are missing an alternative of rocksdb.cr or a related project?
README
rocksdb.cr 
RocksDB client for Crystal.
- crystal: 0.27.2 0.33.0 1.0.0
Supported API
See [API](./API.md)
Installation
Add this to your application's shard.yml
:
dependencies:
rocksdb:
github: maiha/rocksdb.cr
version: 1.0.0
Usage
require "rocksdb"
db = RocksDB::DB.new("tmp/db1")
db.put("foo", "1")
db.get("foo") # => "1"
db.delete("foo")
db.get("foo") # => ""
db.get?("foo") # => nil
db.get!("foo") # raise RocksDB::NotFound.new("foo")
db.close
readonly mode
db = RocksDB::DB.new("tmp/db1", readonly: true)
# or RocksDB::DB.read("tmp/db1")
db.put("foo", "1") # raise RocksDB::Error("Not supported operation in read only mode.")
Iterations
3.times{|i| db.put("k#{i}", i) }
db.keys # => ["k0","k1","k2"]
db.keys(2) # => ["k0","k1"]
db.each do |k,v|
...
Iterator
iter = db.new_iterator
iter.key # => "k0"
iter.next
iter.value # => "1"
iter.first
iter.key # => "k0"
iter.seek("k2")
iter.next
iter.valid? # => false
iter.close # memory leaks when you forget this
- same as
each
iter = db.new_iterator
iter.first
while (iter.valid?)
# yield {iter.key, iter.value}
iter.next
end
iter.close # memory leaks when you forget this
binary data
Although all data are stored as Binary in RocksDB, return value will be converted to String when accessed by String key.
db.put(Bytes[0], Bytes[9])
db.get(Bytes[0]) # => Bytes[9]
db.get("\u{0}") # => "\t"
binary iterator
binary_XXX
is available to treat data as binary
binary_keys
binary_each
new_binary_iterator
db.keys # => ["\t"]
db.binary_keys # => [Bytes[9]]
database options
options
for opening databaseread_options
for reading datawrite_options
for writing data
opts = RocksDB::Options.new
opts.set_create_if_missing(1)
ropts = RocksDB::ReadOptions.new
ropts.set_verify_checksum(1)
wopts = RocksDB::WriteOptions.new
wopts.set_sync(1)
wopts.disable_wal(1)
db = RocksDB::DB.new("tmp/db1", options: opts, read_options: ropts, write_options: wopts)
- all options: [options.cr](./src/rocksdb/options.cr)
Roadmap
0.5.0
- [x] Iterations for Binary
Testing
- Now Travis CI is ready by https://github.com/maiha/rocksdb.cr/pull/3
Contributing
- Fork it ( https://github.com/maiha/rocksdb.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- maiha maiha - creator, maintainer