- 概述:
为了给我的riser服务(key/value)做一个主从复制功能, 最近写了一个持久化的队列库,我这个队列库功能上比较简单,顺便也增强了点功能,先向大家贴出我的成果:
git clone https://github.com/oceanwavewyt/queue.git
- 性能
10万条数据写入时间: 3.329s ==> 30000 q/s 写
10万条数据读出时间: 3.738s ==> 26000 q/s 读
- 特点
1. 持久化存储;
2. 可以设置数据的优先级别,支持10个级别 分别是 0,1,2,3,4,5,6,7,8,9. 数字越大级别越大,在读取的时候,不指定读取的级别,会读取级别高的数据。
- 调用方式
//包含头文件 #include "include/queue.h" //创建Queue对象 levelque::Queue *db; //打开一个bbs队列,目录为/tmp levelque::Queue::Open("/tmp","bbs", &db); //创建一个新的队列 db->CreateQueueName("/tmp", "blog"); 写数据 //向bbs队列写入数据 char testData[100]={0}; sprintf(testData, "%ld_welcome to beijing_1",time(NULL)); //向级别bbs队列中的1级别写入数据 db->Write("bbs",testdata, strlen(testData),1); //向级别bbs队列中的 9级别写入数据 db->Write("bbs",testdata, strlen(testData),9); 读数据 //默认读取级别高的,且有数据的 bbs队列 if(db->Read("bbs", data)) { cout << "max read: " << data << endl; cout << "the number of bbs queue: "<< db->Size("bbs") << endl; } //读取指定级别的数据 db->Read("abc_two", data, 2); 读取队列的数量 //bbs队列中的数据条数 db->Size("bbs"); //指定级别中的数据条数 db->Size("bbs", 2);