在有大量節點訪問的資料庫設計中,經常要使用到連線池來管理所有的連線.
一般方法是:建立兩個連線控制代碼佇列,空閒的等待使用的佇列和正在使用的佇列.
當要查詢時先從空閒佇列中獲取乙個控制代碼,插入到正在使用的佇列,再用這個控制代碼做資料庫操作,完畢後一定要從使用佇列中刪除,再插入到空閒佇列.
設計**如下:
//定義控制代碼佇列
typedef std::listconnection_handle_list;
typedef std::list::iterator connection_handle_list_it;
//連線資料庫的引數結構
class cdbparameter
;//建立兩個佇列
connection_handle_list m_lsbusylist; ///《正在使用的連線控制代碼
connection_handle_list m_lsidlelist; ///《未使用的連線控制代碼
//所有的連線控制代碼先連上資料庫,加入到空閒佇列中,等待使用.
bool cdbmanager::connect(char * host /* = "localhost" */, char * user /* = "chenmin" */, \
char * password /* = "chenmin" */, char * database /* = "hostcache" */)
}catch(...)
return true;
}//提取乙個空閒控制代碼供使用
mysql * cdbmanager::getidleconnecthandle()
else //特殊情況,閒佇列中為空,返回為空
m_listmutex.release();
return pconnecthandle;
}//從使用佇列中釋放乙個使用完畢的控制代碼,插入到空閒佇列
void cdbmanager::setidleconnecthandle(mysql * connecthandle)
//使用示例,首先獲取空閒控制代碼,利用這個控制代碼做真正的操作,然後再插回到空閒佇列
bool cdbmanager::deletehostcachebysessionid(char * sessionid)
//傳入空閒的控制代碼,做真正的刪除操作
bool cdbmanager::deletehostcachebysessionid(mysql * connecthandle, char * sessionid)
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...
dbcp資料庫連線池管理
該包主要是管理資料庫的鏈結,獲取鏈結 釋放連線 設定最大連線數 初始化連線數 的空閒時間 在連線資料庫時建立乙個連線池可以很方便的管理所有資料庫鏈結,和高效的使用資料庫連線。主要的兩個物件是basicdatasource 和 basicdatasourcefactory,產生basicdatasou...
dbcp資料庫連線池管理
該包主要是管理資料庫的鏈結,獲取鏈結 釋放連線 設定最大連線數 初始化連線數 的空閒時間 在連線資料庫時建立乙個連線池可以很方便的管理所有資料庫鏈結,和高效的使用資料庫連線。主要的兩個物件是basicdatasource 和 basicdatasourcefactory,產生basicdatasou...