Explorer : 发布一个key-value存储系统,带有客户端和服务器端

Explorer

一个key-value存储系统,带有客户端和服务器端。使用非常方便。

使用B+树作为存储引擎,客户端和服务器端使用TCP协议进行通信。

代码采用C++实现,底层将客户端和服务器通信封装成了一个网络库,里面还有些还不错的实现可供看看,比如线程池、工作队列、Reactor设计模式实现等等。

项目地址:https://github.com/zinx2016/Explorer (欢迎大家给star  :)

编译方式

make

例子

首先启动服务器程序:

然后,运行客户端程序 :

首先,运行服务器程序 :
./exp-srv

然后,运行客户端程序 :
./exp-cli

插入key-value :
> set  zx  1

查找key : 
> get  zx

更新key :
> update  zx  2

删除key :
> del  zx

显示存储系统目前状态 :
> stat

帮助命令 :
> h

退出客户端 :
> q

注意

Explorer默认采用字符串作为key类型,int作为value类型
所有的key-values都存储在一个文件中,文件名为test.db。可以在源文件test/kvstore/exp-server/exp-server.cc中修改文件名及文件位置。

时间: 2024-12-22 12:05:29

Explorer : 发布一个key-value存储系统,带有客户端和服务器端的相关文章

Key/Value存储系统etcd的特性

etcd 是一个高可用的Key/Value存储系统,和其他KV存储系统不同的是,它的灵感来自于 ZooKeeper 和 Doozer,主要用于分享配置和服务发现.利用 etcd 的特性,应用程序可以在集群中共享信息.配置或作服务发现,etcd 会在集群的各个节点中复制这些数据并保证这些数据始终正确. 它的主要优点是: 简单:支持 curl 方式的用户 API (HTTP+JSON) 安全:可选 SSL 客户端证书认证 快速:单实例可达每秒 1000 次写操作 可靠:使用Raft强一致性算法实现分

nuget服务器搭建,以及如何发布一个Nuget包

一.本地dll如何打包,以及版本的更新 本小节主要介绍两种方式将本地dll打包为Nuget包, 1.1 利用nuget.exe进行打包(应用于.net framework) 1. 下载nuget.exe nuget.exe下载地址:https://www.nuget.org/downloads. 下载完成后,不需要安装.请将nuget.exe复制到需要打包的项目文件夹中 2. 打包成.nupkg包 首先运行.\nuget sepc 生成.nuspec配置文件,用于nuget的配置项 然后运行.\

如何发布一个自定义Node.js模块到NPM(详细步骤)

咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着,以极少的文字说明以及极少的代码书写为原则来给大家演示! 文章中上传的模块不具备任何意义! 一.封装node.js模块时的必须项 1.创建package.json 每一个完整封装的node模块,必须含有一个参数明确的package.json文件! 以下为package.json的最精简配置: { "n

使用CXF框架,发布webservice服务,并使用客户端远程访问webservice

使用CXF框架,发布webservice服务,并使用客户端远程访问webservice  1. CXF介绍 :soa的框架    * cxf 是 Celtrix (ESB框架)和 XFire(webserivice) 合并而成,并且捐给了apache      * CxF的核心是org.apache.cxf.Bus(总线),类似于Spring的 ApplicationContext    * CXF默认是依赖于Spring的    * Apache CXF 发行包中的jar,如果全部放到lib中

利用jws发布一个查询员工信息的Web服务(员工信息存储在数据库中)

这是<基于服务的软件系统>的课程设计: 一.作业要求 编写查询员工信息的Web服务(员工信息存储在数据库中).第一个Web服务:输入员工号,返回该员工号的员工的基本信息,包括员工号.员工名称.所在部门.出生日期.职位.职称.入职日期等信息.第二个Web服务:输入部门.职称,返回该部门具有该职称的所有员工的基本信息,员工基本信息与上面相同.分别针对上述两个Web服务,分别编写调用这两个Web服务的程序(或网页).要求在输入界面上输入待查询数据,调用Web服务,并将Web服务返回的员工信息查询结果

学习python这么久,有没有考虑发布一个属于自己的模块?

? 1. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而这个过程就是 打包. 打包,就是将你的源代码进一步封装,并且将所有的项目部署工作都事先安排好,这样使用者拿到后即装即用,不用再操心如何部署的问题(如果你不想对照着一堆部署文档手工操作的话). 不管你是在工作中,还是业余准备自己写一个可以上传到 PyPI 的项目,你都要学会如何打包你的项目. Python 发展了这么些年了,项目打包

自定义及发布一个webservice服务

自定义及发布一个webservice服务    - 声明 某个业务服务为webservice服务       通过@webservice 注解来声明    - 发布webservice服务       Endpoint.publish()发布 (默认对public修饰的方法进行发布)    - 通过wsimport生成本地代理来访问自己发布的webservice       wsimport 1.发布自定义webservice phone.java package ws.myWebService

Android 开发中踩过的坑之九: 发布一个aar的注意事项

现在Android支持aar格式发布一个模块, 提供给其他人使用. aar其实是jar和一些资源文件的zip包. 解决了过去jar包不能分享资源的局限. 1 要尽量避免定义内部接口, 这其实是一个编程习惯, 接口interface最好是独立定义, 避免定义在类的内部. 因为当你发布aar时, 内部的接口在混淆后会独立成一个外部的接口Outer$InnerInterface. 然后麻烦来了, 别人在实现这个类的时候必须也写成XXX implement Outer$InnerInterface{}的

一个Wininet实现的FTP客户端

上一篇列出了用Wininet实现一个FTP客户端的一般步骤和需要使用到的函数.这篇实现一个简单的ftp客户端. 首先打开VS,新建一个Win32的控制台应用程序. 一个Wininet实现的FTP客户端,码迷,mamicode.com