7 releases (4 breaking)
Uses old Rust 2015
0.5.0 | Jul 30, 2018 |
---|---|
0.4.0 | Nov 1, 2017 |
0.3.1 | Sep 13, 2017 |
0.2.1 | Apr 22, 2016 |
0.1.0 | Apr 21, 2016 |
#24 in #memcached
31KB
720 lines
bmemcached-rs
Rust binary memcached implementation (ON GOING)
Usage
extern crate bmemcached;
use std::sync::Arc;
use std::thread;
use bmemcached::MemcachedClient;
fn main() {
// Use arc for threading support
let client = Arc::new(MemcachedClient::new(vec!["127.0.0.1:11211"], 5).unwrap());
// Traits examples
let value = "value";
client.set("string", value, 1000);
let rv: String = client.get("string").unwrap();
assert_eq!(rv, "value");
client.set("integer", 10 as u8, 1000);
let rv: u8 = client.get("integer").unwrap();
assert_eq!(rv, 10 as u8);
// Threads example
let mut threads = vec![];
for i in 0..4 {
let client = client.clone();
threads.push(thread::spawn(move || {
let data = format!("data_n{}", i);
client.set(&data, &data, 100).unwrap();
let val: String = client.get(&data).unwrap();
client.delete(&data).unwrap();
val
}));
}
for (i, thread) in threads.into_iter().enumerate() {
let result = thread.join();
assert_eq!(result.unwrap(), format!("data_n{}", i));
}
}
Why
I am trying to learn rust by reimplementing a python project that I wrote.
What works
- Add
- Set
- Replace
- Get
- Delete
- Increment
- Decrement
- Consistent Hashing
- Threading Support
Trait usage
On all supported functions we use traits to be able to send any type of values to memcached.
Dependencies
~3–8.5MB
~86K SLoC