1个不稳定版本

0.1.7 2024年7月24日
0.1.6 2024年7月24日
0.1.5 2024年3月28日

#655数据库接口

Download history 6/week @ 2024-05-18 5/week @ 2024-05-25 1/week @ 2024-06-01 205/week @ 2024-07-20 36/week @ 2024-07-27

每月 241 次下载

MIT 协议

33KB
781

RedisQueueRS

Rust中的简单Redis队列实现。

该项目提供了两种实现:RedisQueueAsyncRedisQueue。它们都基于相同的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