代码拉取完成,页面将自动刷新
同步操作将从 畅柯/MyCacheDb 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
MyCacheDB是一个基于C/S架构的小型缓存数据库,支持string,hash,list,set,sortset对象的基本操作,提供易用的用户编程和终端输入接口。
服务端
客户端
名称 | 作用 |
---|---|
client | 客户端源代码实现 |
server | 服务器源代码 |
conf | 配置文件 |
image | 一些截图信息 |
logInfo | 日志记录文件 |
start.sh | 编译程序的shell命令脚本 |
test | 客户端测试文件 |
example | 例子程序 |
(1)修改配置文件,进入conf文件,打开配置文件填写IP和端口信息,格式为冒号+空格+IP/端口。
(2)修改start.sh文件的权限。
chmod a+x start.sh //当前目录中必须有start.sh文件
(3)进入server目录,运行服务器。
./Server
(4)进入client目录,执行。
sudo cp -R MyCacheDB /usr/include
sudo mv DBClient /usr/sbin
进入client下的lib目录,将其中的静态库文件移动到你自定义程序的目录下,需要在编译时链接。
(5)编写自定义的程序如下
main.cpp
#include <iostream>
#include <MyCacheDB/clientLoop.h>
using namespace std ;
int main(int argc, char** argv) {
clientLoop clp ;
//传入IP 和地址
clp.init("127.0.0.1", "8888") ;
//在配置文件中找
//clp.init() ;
//////////////////////////////程序中使用
clp.sendRequest("set", "name", "wc", END) ;
clp.sendRequest("get", "name", END) ;
clp.sendRequest("hset", "student", "name","ck", "age", "18", END) ;
clp.sendRequest("hget", "student", "name", END) ;
clp.sendRequest("hget", "student", "age", END) ;
//........
//////////////////////////获取结果
cout << "获取的返回结果:" << endl ;
clp.getResult() ;
clp.getResult() ;
clp.getResult() ;
clp.getResult() ;
clp.getResult() ;
///////////////////////////////////////////////终端使用
// clp.start() ;
return 0;
}
编译
g++ main.cpp libclient.a -lpthread -g -std=c++11 -w -lprotobuf -lreadline `pkg-config --cflags --libs protobuf` -o test_exe
运行:
./test_exe
运行截图:
运行client目录下DBClient,终端用户C/S交互截图:
test.cpp
#include <iostream>
#include <sys/time.h>
#include <MyCacheDB/clientLoop.h>
using namespace std ;
int main(int argc, char** argv) {
struct timeval tv, tend;
clientLoop clp ;
clp.init("127.0.0.1", "8888") ;
gettimeofday(&tv,NULL);
int a = 10000 ;
while(a--) {
clp.sendRequest("get", "name", END) ;
clp.getResult() ;
}
gettimeofday(&tend,NULL);
cout << "读取测试" << endl ;
cout << "==================================================" << endl ;
cout <<"开始时间戳:"<< tv.tv_sec<<"." << tv.tv_usec<<"s"<< endl;
cout <<"结束时间戳:"<< tend.tv_sec<<"." << tend.tv_usec<<"s"<< endl;
int s = (tend.tv_sec-tv.tv_sec)*1000000 ;
int us = tend.tv_usec - tv.tv_usec ;
double h = 10000;
int end = s + us ;
cout <<h*1000000/end<< endl ;
cout << "speed:" << h*1000000/end <<"cmd/s"<< endl ;
struct timeval tv1, tend1;
gettimeofday(&tv1,NULL);
a = 10000 ;
while(a--) {
clp.sendRequest("hset", "student", "name","ck", "age", "18", END) ;
clp.getResult() ;
}
gettimeofday(&tend1,NULL);
cout << "修改测试" << endl ;
cout << "==================================================" << endl ;
cout <<"开始时间戳:"<< tv1.tv_sec<<"." << tv1.tv_usec<<"s"<< endl;
cout <<"结束时间戳:"<< tend1.tv_sec<<"." << tend1.tv_usec<<"s"<< endl;
s = (tend1.tv_sec-tv1.tv_sec)*1000000 ;
us = tend1.tv_usec - tv1.tv_usec ;
h = 10000;
end = s + us ;
cout <<"speed:" << h*1000000/end<<"cmd/s"<< endl ;
return 0;
}
g++ test.cpp libclient.a -lpthread -g -std=c++11 -w -lprotobuf -lreadline `pkg-config --cflags --libs protobuf` -o test_exe
运行结果:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。