mysql
Linux下用C/C++写一个提高mysql数据库效率的数据缓存模块
缓存表结构(用户表):
CREATE TABLE `user_info` (
`player_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(15) NOT NULL,
`user_password` varchar(15) NOT NULL,
`location_x` int(11) DEFAULT '0',
`location_y` int(11) DEFAULT '0',
`logo_id` int(11) DEFAULT '0',
`e_mail` varchar(45) DEFAULT NULL,
`experiences` int(11) DEFAULT '0',
PRIMARY KEY (`player_id`),
UNIQUE KEY `index2` (`user_name`)
)
要求:
1)“缓存模块”提供数据访问的接口,其他程序通过“缓存模块”获取数据,不直接访问数据库;
2)内存保存最常用的50条数据;
3)查询操作时,“缓存模块”需优先使用内存中的数据;修改操作时,“缓存模块”需同步数据库和内存中的数据;
4)只实现“查询”和“修改”两种操作;
5)用多线程实现每分钟同步一次“内存”与“数据库”的数据;
6)用标准C/C++写,不使用第三方组件;
------解决方案--------------------一个线程定时取新数据替换当前的缓存数据就行了,访问与更新之间采用读写锁,很常用的DB缓冲手段。