use redis::aio::ConnectionManager;
use tokio::sync::OnceCell;
use crate::config::get_redis_url;
static SHARED_CONNECTION: OnceCell<ConnectionManager> = OnceCell::const_new();
pub async fn get_redis_connection() -> redis::RedisResult<ConnectionManager> {
let conn = SHARED_CONNECTION
.get_or_try_init(|| async {
let client = redis::Client::open(get_redis_url())?;
ConnectionManager::new(client).await
})
.await?;
Ok(conn.clone())
}
pub async fn get_dedicated_connection() -> redis::RedisResult<redis::aio::MultiplexedConnection> {
let client = redis::Client::open(get_redis_url())?;
client.get_multiplexed_async_connection().await
}