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
Famcacheserver usingtokio. - Concurrency Safe: Uses
RwLockfor 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 famcacheHere'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 theFamcacheserver.port: Port of theFamcacheserver.
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 buildcargo testContributions 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.