Expand description
A pure-rust client for the Aerospike NoSQL database.
Aerospike is an enterprise-class, NoSQL database solution for real-time operational applications, delivering predictable performance at scale, superior uptime, and high availability at the lowest TCO compared to first-generation NoSQL and relational databases. For more information please refer to https://www.aerospike.com/.
§Installation
Add this to your Cargo.toml
:
[dependencies]
aerospike = "1.0.0"
§Examples
The following is a very simple example of CRUD operations in an Aerospike database.
#[macro_use]
extern crate aerospike;
use std::env;
use std::sync::Arc;
use std::time::Instant;
use std::thread;
use aerospike::{Bins, Client, ClientPolicy, ReadPolicy, WritePolicy};
use aerospike::operations;
fn main() {
let cpolicy = ClientPolicy::default();
let hosts = env::var("AEROSPIKE_HOSTS")
.unwrap_or(String::from("127.0.0.1:3000"));
let client = Client::new(&cpolicy, &hosts)
.expect("Failed to connect to cluster");
let client = Arc::new(client);
let mut threads = vec![];
let now = Instant::now();
for i in 0..2 {
let client = client.clone();
let t = thread::spawn(move || {
let rpolicy = ReadPolicy::default();
let wpolicy = WritePolicy::default();
let key = as_key!("test", "test", i);
let bins = [
as_bin!("int", 123),
as_bin!("str", "Hello, World!"),
];
client.put(&wpolicy, &key, &bins).unwrap();
let rec = client.get(&rpolicy, &key, Bins::All);
println!("Record: {}", rec.unwrap());
client.touch(&wpolicy, &key).unwrap();
let rec = client.get(&rpolicy, &key, Bins::All);
println!("Record: {}", rec.unwrap());
let rec = client.get(&rpolicy, &key, Bins::None);
println!("Record Header: {}", rec.unwrap());
let exists = client.exists(&wpolicy, &key).unwrap();
println!("exists: {}", exists);
let bin = as_bin!("int", 999);
let ops = &vec![operations::put(&bin), operations::get()];
let op_rec = client.operate(&wpolicy, &key, ops);
println!("operate: {}", op_rec.unwrap());
let existed = client.delete(&wpolicy, &key).unwrap();
println!("existed (sould be true): {}", existed);
let existed = client.delete(&wpolicy, &key).unwrap();
println!("existed (should be false): {}", existed);
});
threads.push(t);
}
for t in threads {
t.join().unwrap();
}
println!("total time: {:?}", now.elapsed());
}
Re-exports§
pub use commands::particle_type::ParticleType;
pub use errors::Error;
pub use errors::ErrorKind;
pub use errors::Result;
pub use expressions::regex_flag::RegexFlag;
pub use operations::MapPolicy;
pub use operations::MapReturnType;
pub use operations::MapWriteMode;
pub use policy::BatchPolicy;
pub use policy::ClientPolicy;
pub use policy::CommitLevel;
pub use policy::Concurrency;
pub use policy::ConsistencyLevel;
pub use policy::Expiration;
pub use policy::GenerationPolicy;
pub use policy::Policy;
pub use policy::Priority;
pub use policy::QueryPolicy;
pub use policy::ReadPolicy;
pub use policy::RecordExistsAction;
pub use policy::ScanPolicy;
pub use policy::WritePolicy;
pub use query::CollectionIndexType;
pub use query::IndexType;
pub use query::Recordset;
pub use query::Statement;
pub use query::UDFLang;
pub use task::IndexTask;
pub use task::RegisterTask;
pub use task::Task;
Modules§
- errors
- Error and Result types for the Aerospike client.
- expressions
- Functions used for Filter Expressions. This module requires Aerospike Server version >= 5.2
- operations
- Functions used to create database operations used in the client’s
operate()
method. - policy
- Policy types encapsulate optional parameters for various client operations.
- query
- Types and methods used for database queries and scans.
- task
- Types and methods used for long running status queries.
Macros§
- as_bin
- Construct a new bin from a name and an optional value (defaults to the empty value
nil
). - as_blob
- Constructs a new Blob Value from one of the supported native data types.
- as_
contains - Create contains number filter for queries on a collection index.
- as_
contains_ range - Create contains range filter for queries on a collection index.
- as_eq
- Create equality filter for queries; supports integer and string values.
- as_geo
- Constructs a new
GeoJSON
Value from one of the supported native data types. - as_key
- Construct a new key given a namespace, a set name and a user key.
- as_list
- Constructs a new List Value from a list of one or more native data types.
- as_map
- Constructs a Map Value from a list of key/value pairs.
- as_
range - Create range filter for queries; supports integer values.
- as_
regions_ containing_ point - Create geospatial “regions containing point” filter for queries. For queries on a collection index the collection index type must be specified.
- as_val
- Constructs a new Value from one of the supported native data types.
- as_
values - Constructs a vector of Values from a list of one or more native data types.
- as_
within_ radius - Create geospatial “points within radius” filter for queries. For queries on a collection index the collection index type must be specified.
- as_
within_ region - Create geospatial “points within region” filter for queries. For queries on a collection index the collection index type must be specified.
Structs§
- Batch
Read - Key and bin names used in batch read commands where variable bins are needed for each key.
- Bin
- Container object for a record bin, comprising a name and a value.
- Client
- Instantiate a Client instance to access an Aerospike database cluster and perform database operations.
- Host
- Host name/port of database server.
- Key
- Unique record identifier. Records can be identified using a specified namespace, an optional set name and a user defined key which must be uique within a set. Records can also be identified by namespace/digest, which is the combination used on the server.
- Record
- Container object for a database record.
- User
- User and assigned roles.
Enums§
- Bins
- Specify which, if any, bins to return in read operations.
- Float
Value - Container for floating point bin values stored in the Aerospike database.
- Result
Code - Database operation error codes. The error codes are defined in the server-side file proto.h.
- Value
- Container for bin values stored in the Aerospike database.