11个版本 (破坏性更新)

0.12.1 2024年5月21日
0.12.0 2024年3月24日
0.11.0 2024年3月16日
0.9.0 2023年6月11日
0.4.0 2022年10月22日

#1475 in 过程宏

Download history 154/week @ 2024-05-19 2/week @ 2024-05-26 5/week @ 2024-06-02 2/week @ 2024-06-09 1/week @ 2024-06-16 45/week @ 2024-06-30 156/week @ 2024-07-28

每月下载量156
4 个crate中使用 (通过 redis-swapplex)

MIT 协议

6KB

redis-swapplex

License Cargo Documentation

Redis多路复用,具有重连通知和MGET自动批处理

为什么使用这个而不是 redis::aio::ConnectionManager?

  • 无错误重连行为:当命令因连接断开而失败时,此库将立即重连并尝试,不会产生可避免的IoError,后续重连延迟1500ms
  • ENV配置简化了Kubernetes的使用
  • 可以观察重连,允许使用客户端跟踪重定向实现Redis 服务器辅助客户端缓存
  • 集成MGET自动批处理

ENV配置

通过使用带有REDIS前缀的env-url提供可组合的连接URL,通过环境变量

REDIS_URL=redis://127.0.0.1:6379
# Override env mapping for easy kubernetes config
REDIS_HOST_ENV=MONOLITH_STAGE_REDIS_MASTER_PORT_6379_TCP_ADDR
REDIS_PORT_ENV=MONOLITH_STAGE_REDIS_MASTER_SERVICE_PORT_REDIS

示例

use redis::{AsyncCommands, RedisResult};
use redis_swapplex::get_connection;

async fn get_value(key: &str) -> RedisResult<String> {
  let mut conn = get_connection();
  conn.get(key).await
}

运行时配置(可选)

为了获得最佳性能,请使用通过crate属性设置为async_local并启用了barrier-protected-runtime功能的async-localtokio::maintokio::test宏配置的Tokio运行时。这样做将配置Tokio运行时,在关闭时确保任务不会超过由运行时工作线程拥有的线程局部数据,从而消除了使用Box::leak作为生命周期扩展手段的需要。

依赖项

~260–700KB
~17K SLoC