
redis 0.29.1这个 crate本身没有内置连接池。它提供的是redis::ClientRedis 客户端client.get_connection()获取单个同步连接client.get_multiplexed_async_connection()获取单个异步可复用连接这些都不是连接池。如果你要 Rust Redis 连接池常见做法是额外引入池化库库适用场景deadpool-redis异步推荐bb8-redis异步r2d2_redis同步推荐依赖[dependencies] redis 0.29.1 deadpool-redis 0.18 tokio { version 1, features [full] }版本号以你项目实际能编译通过为准。连接池示例use deadpool_redis::{Manager, Pool}; pub async fn create_redis_pool() - Pool { let mgr Manager::new(redis://127.0.0.1:6379/).unwrap(); Pool::builder(mgr) .max_size(16) .build() .unwrap() }使用连接let pool create_redis_pool().await; let mut conn pool.get().await.unwrap(); let _: () redis::cmd(SET) .arg([foo, bar]) .query_async(mut conn) .await .unwrap();全局静态连接池写法use deadpool_redis::{Manager, Pool}; use tokio::sync::OnceCell; static REDIS_POOL: OnceCellPool OnceCell::const_new(); pub async fn get_redis_pool() - static Pool { REDIS_POOL .get_or_init(|| async { let mgr Manager::new(redis://127.0.0.1:6379/).unwrap(); Pool::builder(mgr) .max_size(16) .build() .unwrap() }) .await }使用let pool get_redis_pool().await; let mut conn pool.get().await.unwrap(); let _: () redis::cmd(GET) .arg([foo]) .query_async(mut conn) .await .unwrap();结论redis 0.29.1没有自带连接池。如果你要连接池建议用deadpool-redis然后全局维护一个Pool每次通过pool.get().await获取连接。需要我把数据库连接池和 Redis 连接池的配置整合成一份完整的 Cargo.toml 依赖清单吗