#redis #pub-sub #message #publish #connection #subscribe #kiss

redis-kiss

管理Redis PubSub的一种非常简单的方法

5个版本

0.1.4 2023年4月21日
0.1.3 2022年2月21日
0.1.2 2022年2月21日
0.1.1 2022年2月18日
0.1.0 2022年2月5日

1147数据库接口

Download history 46/week @ 2024-03-11 37/week @ 2024-03-18 43/week @ 2024-03-25 85/week @ 2024-04-01 39/week @ 2024-04-08 29/week @ 2024-04-15 40/week @ 2024-04-22 84/week @ 2024-04-29 20/week @ 2024-05-06 43/week @ 2024-05-13 50/week @ 2024-05-20 53/week @ 2024-05-27 45/week @ 2024-06-03 66/week @ 2024-06-10 88/week @ 2024-06-17 86/week @ 2024-06-24

292 每月下载量
4 crates 中使用

MIT 许可

13KB
203 代码行

redis_kiss

注意:现在这也暴露了对Redis连接池的访问。

这是一个非常简单的库,仅用于消费和产生Redis PubSub的消息,它几乎不遵循“良好的编程实践”,但它确实可以工作并简化所需的工作。

该库管理一个全局的Redis连接池,并动态创建监听连接(由于一些技术限制)。

示例

向Redis发布内容

// Handle the Result<_, _>
redis_kiss::publish("channel", "data").await?;

// Log the error instead
redis_kiss::p("channel", "data").await;

订阅Redis(如通常情况,请参阅Redis文档以获取更多信息

// Create a new PubSub connection
let mut conn = redis_kiss::open_pubsub_connection().await?;

// Subscribe to something
conn.subscribe("test").await?;

// Handle incoming messages
let mut stream = conn.on_message();
while let Some(item) = stream.next().await {
    // Use Redis crate API as usual
    let channel = item.get_channel_name().to_string();

    // Decode the message using previously specified options
    // into a certain DeserializeOwned data type T, in this case String
    let payload: String = redis_kiss::decode_payload(&item).await?;

    // You can also choose a specific type on the fly
    use redis_kiss::PayloadType;
    let payload: String = redis_kiss::decode_payload(&item, &PayloadType::Msgpack).await?;

    // Do something with channel and payload
}

环境变量

该库通过环境提供选项。

名称 描述 默认
REDIS_URI Redis服务器的URI redis://localhost
REDIS_POOL_MAX_OPEN Redis池中连接的最大数量(用于发布数据) 1000
REDIS_PAYLOAD_TYPE 发布数据到Redis时使用的数据类型,可以是jsonmsgpackbincode json
REDIS_KISS_LENIENT 是否尝试在无法使用所选类型反序列化时自动解码其他负载类型 1

依赖项

~9–21MB
~321K SLoC