Famcache-rs
is a Rust client for Famcache
, a caching server written in Go. This client provides a simple interface for connecting to Famcache
and performing basic cache operations like setting, getting, and deleting values.
- Asynchronous API: Fully asynchronous operations to interact with the
Famcache
server usingtokio
. - Concurrency Safe: Uses
RwLock
for safe concurrent access. - Simple and Intuitive: Easy to use API with straightforward methods for cache operations.
Add famcache to your Cargo.toml
or simply run
cargo add famcache
Here's a quick example of how to use famcache-rs:
use famcache::{Config, Famcache};
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let mut client = Famcache::new(Config::new("localhost", 3577));
client.connect().await?;
client.set("test", "rust", None).await?;
client.set("test1", "rust2", None).await?;
let val = client.get("test").await?;
println!("Connected to server: {:?}", val);
Ok(())
}
use anyhow::Result;
use famcache::{Config, Famcache};
#[tokio::main]
async fn main() -> Result<()> {
let mut client = Famcache::new(Config::new("localhost", 3577));
client.connect().await?;
let mut subscription = client.messaging.subscribe("topic1").await?;
tokio::spawn(async move {
loop {
let message = subscription.recv().await.unwrap();
println!("Received message: {}", message);
}
})
.await?;
client.messaging.unsubscribe("topic1").await?;
Ok(())
}
Creates a new Famcache
client instance.
config
: Configuration object with the following properties:host
: Hostname of theFamcache
server.port
: Port of theFamcache
server.
Opens a connection to the Famcache
server.
Sets a value in the cache.
key
: The key to set.value
: The value to set.ttl
: Optional time-to-live in milliseconds.
Gets a value from the cache.
key
: The key to retrieve.
Returns the value associated with the key or None
if the key does not exist.
Deletes a value from the cache.
key
: The key to delete.
Publishes a message to a topic.
topic
: The topic to publish to.data
: The message data to publish.
Subscribes to a topic and returns a receiver for receiving messages.
topic
: The topic to subscribe to.
Unsubscribes from a topic.
topic
: The topic to unsubscribe from.
- Rust
- Cargo
cargo build
cargo test
Contributions are welcome! Please open an issue or submit a pull request for any bugs or improvements.
This project is licensed under the MIT License. See the LICENSE file for details.