日期:2014-05-16  浏览次数:20688 次

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缓冲手段。