diff --git a/nosql_lib/redis/src/RedisClientImpl.cc b/nosql_lib/redis/src/RedisClientImpl.cc
--- a/nosql_lib/redis/src/RedisClientImpl.cc
+++ b/nosql_lib/redis/src/RedisClientImpl.cc
@@ -12,6 +12,7 @@
  *
  */
 
+#include "RedisConnection.h"
 #include "RedisClientImpl.h"
 #include "RedisTransactionImpl.h"
 #include "../../lib/src/TaskTimeoutFlag.h"
diff --git a/nosql_lib/redis/src/RedisClientImpl.h b/nosql_lib/redis/src/RedisClientImpl.h
--- a/nosql_lib/redis/src/RedisClientImpl.h
+++ b/nosql_lib/redis/src/RedisClientImpl.h
@@ -13,7 +13,6 @@
  */
 #pragma once
 
-#include "RedisConnection.h"
 #include <drogon/nosql/RedisClient.h>
 #include <trantor/utils/NonCopyable.h>
 #include <trantor/net/EventLoopThreadPool.h>
@@ -26,6 +25,8 @@ namespace drogon
 {
 namespace nosql
 {
+class RedisConnection;
+using RedisConnectionPtr = std::shared_ptr<RedisConnection>;
 class RedisClientImpl final
     : public RedisClient,
       public trantor::NonCopyable,
diff --git a/nosql_lib/redis/src/RedisClientLockFree.cc b/nosql_lib/redis/src/RedisClientLockFree.cc
--- a/nosql_lib/redis/src/RedisClientLockFree.cc
+++ b/nosql_lib/redis/src/RedisClientLockFree.cc
@@ -12,6 +12,7 @@
  *
  */
 
+#include "RedisConnection.h"
 #include "RedisClientLockFree.h"
 #include "RedisTransactionImpl.h"
 #include "../../lib/src/TaskTimeoutFlag.h"
diff --git a/nosql_lib/redis/src/RedisClientLockFree.h b/nosql_lib/redis/src/RedisClientLockFree.h
--- a/nosql_lib/redis/src/RedisClientLockFree.h
+++ b/nosql_lib/redis/src/RedisClientLockFree.h
@@ -13,7 +13,6 @@
  */
 #pragma once
 
-#include "RedisConnection.h"
 #include <drogon/nosql/RedisClient.h>
 #include <trantor/utils/NonCopyable.h>
 #include <trantor/net/EventLoopThreadPool.h>
@@ -26,6 +25,8 @@ namespace drogon
 {
 namespace nosql
 {
+class RedisConnection;
+using RedisConnectionPtr = std::shared_ptr<RedisConnection>;
 class RedisClientLockFree final
     : public RedisClient,
       public trantor::NonCopyable,
