| Crates.io | famcache |
| lib.rs | famcache |
| version | 1.1.8 |
| created_at | 2024-05-31 22:36:59.435944+00 |
| updated_at | 2024-05-31 23:05:00.176389+00 |
| description | Official Famcache server client |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1258334 |
| size | 212,617 |
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.
Famcache server using tokio.RwLock for safe concurrent access.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(())
}
Famcachenew(config: Config) -> SelfCreates a new Famcache client instance.
config: Configuration object with the following properties:
host: Hostname of the Famcache server.port: Port of the Famcache server.connect(&mut self) -> Result<()>Opens a connection to the Famcache server.
set(&self, key: &str, value: &str, ttl: Option<u64>) -> Result<()>Sets a value in the cache.
key: The key to set.value: The value to set.ttl: Optional time-to-live in milliseconds.get<T>(&self, key: &str) -> Result<Option<T>>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.
del(&self, key: &str) -> Result<()>Deletes a value from the cache.
key: The key to delete.messaging.publish(&self, topic: &str, data: &str) -> Result<()>Publishes a message to a topic.
topic: The topic to publish to.data: The message data to publish.messaging.subscribe(&self, topic: &str) -> Result<Receiver<String>>Subscribes to a topic and returns a receiver for receiving messages.
topic: The topic to subscribe to.messaging.unsubscribe(&self, topic: &str) -> Result<()>Unsubscribes from a topic.
topic: The topic to unsubscribe from.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.