1个不稳定版本
0.1.7 | 2024年7月24日 |
---|---|
0.1.6 |
|
0.1.5 |
|
#655 在 数据库接口
每月 241 次下载
33KB
781 行
RedisQueueRS
Rust中的简单Redis队列实现。
该项目提供了两种实现:RedisQueue
和AsyncRedisQueue
。它们都基于相同的RedisQueue结构体,由于使用了基于Redis键的锁,因此是线程安全的,但AsyncRedisQueue使用async/await来处理Redis连接。
该项目被视为正在进行中,尚未准备好用于生产。
Redis队列的优势
- 解耦:生产者和消费者是解耦的。生产者可以生产消息而不必担心消费者。
- 可扩展性:生产者和消费者可以独立扩展。
- 可靠性:队列可用于在失败情况下存储消息。
- 异步通信:生产者和消费者可以是异步的。
- 负载均衡:队列可用于在多个消费者之间平衡负载。
安装
将以下内容添加到您的Cargo.toml中
[dependencies]
redis-queue-rs = "*"
使用方法
RedisQueue - 同步实现
use redis_queue_rs::redis_queue::RedisQueue;
use redis::Client;
fn main() {
let redis_client = Client::open("redis://127.0.0.1:6379").unwrap();
let mut redis_queue = RedisQueue::new(
"name_of_queue".to_string(),
redis_client,
);
let item = "test".to_string();
redis_queue.push(item.clone());
let result = redis_queue.pop().unwrap();
}
AsyncRedisQueue - 异步实现
use redis_queue_rs::async_redis_queue::AsyncRedisQueue;
use redis::Client;
#[tokio::main]
async fn main() {
let redis_client = Client::open("redis://127.0.0.1:6379").unwrap();
let mut redis_queue = AsyncRedisQueue::new(
"name_of_queue".to_string(),
redis_client,
).await;
let item = "test".to_string();
redis_queue.push(item.clone()).await;
let result = redis_queue.pop().await.unwrap();
}
许可证
该项目采用MIT许可证,欢迎在您的项目中使用 :)
依赖
~11–23MB
~357K SLoC