AerospikeNative
Ruby aerospike client with c extension
Installation
Add this line to your application's Gemfile:
gem 'aerospike_native'
And then execute:
$ bundle
Or install it yourself as:
$ gem install aerospike_native
Current status
-
operate
command with all operation types -
put
command -
get
command -
remove
command -
select
command -
exixts?
command -
query
command (where, select and udf support) -
scan
command (select and udf support) -
batch
command (get and exists support) -
udf
command (udf management: put, remove, list, get) - Supported bytes type for non-native object types(string or fixnum) via msgpack
- lists and maps for bin value not supported yet (stored as bytes at the moment)
- Supported policies with all parameters for described commands
- Supported digest keys
- Supported exceptions (
AerospikeNative::Exception
) with several error codes constantsAerospikeNative::Exception.constants
- Index management (
create_index
anddrop_index
)
Examples
Located in path examples
Execute in gem root path command ruby -Ilib:ext -r aerospike_native ./examples/batch.rb
or another example
Here is a list of examples:
- batch.rb - batch command example
- operate.rb - operate command example
- put_get_remove.rb - key-value operatations example
- query_and_index.rb - create/drop index and execute query
- query_udf.rb - apply udf function to query operation
- scan.rb - scan records
- scan_udf.rb - apply udf function to scan operation
Usage
Basic
require 'aerospike_native'
client = AerospikeNative::Client.new([{'host' => '127.0.0.1', 'port' => 3000}])
key = AerospikeNative::Key.new('test', 'test', 'sample')
client.put(key, {'bin1' => 1, 'bin2' => 'test'}, {'timeout' => 1})
client.operate(key, [AerospikeNative::Operation.write('bin3', 25), AerospikeNative::Operation.increment('bin1', 2), AerospikeNative::Operation.append('bin1', '_aerospike')], {'timeout' => 1})
client.exists?(key)
record = client.get(key)
record = client.select(key, ['bin2', 'bin1'])
client.remove(key)
10.times do |i|
client.put(AerospikeNative::Key.new('test', 'test', "key#{i}"), {'number' => i, 'name' => 'key'})
end
client.create_index('test', 'test', 'number', 'number_idx');
records = client.query('test', 'test').where(number: [1, 7])
puts records.inspect
records.each { |record| client.remove(record.key) }
Logger
You can specify logger and log level
AerospikeNative::Client.set_logger Rails.logger # stdout by default
AerospikeNative::Client.set_log_level :debug # :debug by default
Contributing
- Fork it ( https://github.com/rainlabs/aerospike_native/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