#redis #连接 #多路复用 #通知 #命令 #重连 #mget

redis-swapplex

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

21个不稳定版本 (10个破坏性更新)

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.1.0 2021年11月30日

#409 in 数据库接口

Download history 151/week @ 2024-05-18 27/week @ 2024-05-25 5/week @ 2024-06-01

1,806 每月下载量
3 crate 中使用

MIT 许可证

26KB
555 代码行

redis-swapplex

License Cargo Documentation

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

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

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

ENV配置

使用env-urlREDIS前缀通过环境变量提供可组合的连接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_localbarrier-protected-runtime功能启用的tokio::maintokio::test宏配置的Tokio运行时。这样做将Tokio运行时配置为具有障碍,以便在关闭时汇合运行时工作线程,从而确保任务不会超过运行时工作线程拥有的线程本地数据,并且消除了使用Box::leak作为生命周期扩展手段的需要。

依赖项

~7–36MB
~564K SLoC