openzeppelin_relayer/utils/
redis.rs1use std::sync::Arc;
2use std::time::Duration;
3
4use color_eyre::Result;
5use redis::aio::ConnectionManager;
6use tokio::time::timeout;
7
8use crate::config::ServerConfig;
9
10pub async fn initialize_redis_connection(config: &ServerConfig) -> Result<Arc<ConnectionManager>> {
20 let redis_client = redis::Client::open(config.redis_url.as_str())?;
21 let connection_manager = timeout(
22 Duration::from_millis(config.redis_connection_timeout_ms),
23 redis::aio::ConnectionManager::new(redis_client),
24 )
25 .await
26 .map_err(|_| {
27 eyre::eyre!(
28 "Redis connection timeout after {}ms",
29 config.redis_connection_timeout_ms
30 )
31 })??;
32 let connection_manager = Arc::new(connection_manager);
33
34 Ok(connection_manager)
35}