Ruby bindings for pmemkv
This is experimental pre-release software and should not be used in production systems. APIs and file formats may change at any time without preserving backwards compatibility. All known issues and limitations are logged as GitHub issues.
- Ruby 2.2 or higher
- PMDK - native persistent memory libraries
- pmemkv - native key/value library
- ffi - for native library integration
- Used only for testing:
- rspec - test framework
Start by installing pmemkv on your system.
Add gem to your Gemfile:
gem 'pmemkv', :git => 'https://github.com/pmem/pmemkv-ruby.git'
Download and install gems:
bundle install
This library includes a set of automated tests that exercise all functionality.
bundle exec rspec
We are using /dev/shm
to
emulate persistent memory
in this simple example.
require 'pmemkv/all'
def assert(condition)
raise RuntimeError.new('Assert failed') unless condition
end
puts 'Starting engine'
kv = KVEngine.new('vsmap', '{"path":"/dev/shm/"}')
puts 'Putting new key'
kv.put('key1', 'value1')
assert kv.count == 1
puts 'Reading key back'
assert kv.get('key1').eql?('value1')
puts 'Iterating existing keys'
kv.put('key2', 'value2')
kv.put('key3', 'value3')
kv.all_strings {|k| puts " visited: #{k}"}
puts 'Removing existing key'
kv.remove('key1')
assert !kv.exists('key1')
puts 'Stopping engine'
kv.stop