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 |
|
#409 in 数据库接口
1,806 每月下载量
在 3 crate 中使用
26KB
555 代码行
redis-swapplex
具有重连通知和MGET自动批处理的Redis多路复用
为什么使用这个而不是 redis::aio::ConnectionManager?
- 无错误的重连行为:当命令因为连接断开而失败时,这个库会立即重连并在能够时重试,而不会产生其他可避免的IoError,并且随后的重连延迟1500ms
- ENV配置简化了Kubernetes的使用
- 可以观察到重连,允许使用Redis 服务器辅助客户端缓存,使用客户端跟踪重定向
- 集成MGET自动批处理
ENV配置
使用env-url和REDIS
前缀通过环境变量提供可组合的连接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
功能启用的tokio::main或tokio::test宏配置的Tokio运行时。这样做将Tokio运行时配置为具有障碍,以便在关闭时汇合运行时工作线程,从而确保任务不会超过运行时工作线程拥有的线程本地数据,并且消除了使用Box::leak作为生命周期扩展手段的需要。
依赖项
~7–36MB
~564K SLoC