Famcache-rs
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.
Features
- 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.
Installation
Add famcache to your Cargo.toml or simply run
Usage
Here's a quick example of how to use famcache-rs:
Cache Operations
use ;
async
Messaging
use Result;
use ;
async
API Reference
Famcache
new(config: Config) -> Self
Creates a new Famcache client instance.
config: Configuration object with the following properties:host: Hostname of theFamcacheserver.port: Port of theFamcacheserver.
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.
Development
Prerequisites
- Rust
- Cargo
Installing Dependencies
Running Tests
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any bugs or improvements.
License
This project is licensed under the MIT License. See the LICENSE file for details.