LLServer1.0及C#客户端正式发布并开源
项目网址:http://code.google.com/p/llserver/
使用环境:Linux
作者:代震军
目前发布版本:1.0
其支持http协议和memcached协议。也就是可以通过浏览器或现有的memcached客户端来进行数据的CURD操作。
下面简单介绍一下如何安装使用LLServer。
LLServer 编译安装:
1.安装libevent2.0
wget http://lnamp-web-server.googlecode.com/files/libevent-2.0.12-stable.tar.gz
tar zxvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable/
./configure --prefix=/usr
make && make install
cd ../
2.通过svn:客户端下载leveldb到本地leveldb文件夹,链接:http://leveldb.googlecode.com/svn/trunk/
或暂时用我这个打好包的地址下载:
wget http://llserver.googlecode.com/files/leveldb.tar.gz
tar zxvf leveldb.tar.gz
之后编译安装
make -f Makefile
cp libleveldb.a /usr/local/lib/
cp -rf include/* /usr/local/include/
cd ../
3.LLServer下载地址:
tar zxvf llserver-1.0.tar.gz
cd llserver/
make -f Makefile
make install
cd ../
4、LLServer 使用文档:
[root@~]# llserver -h
-l <ip_addr> 监听的IP地址,默认值为 0.0.0.0
-p <num> 监听的TCP端口(默认值:11211)
-x <path> 数据库目录,目录不存在会自动创建(例如:/llserver/data)
-c 数据缓存队列单位,默认为100m
-t <second> HTTP请求的超时时间
-s 1:http协议 other:memcached协议
-d 以守护进程运行
-h 显示帮助
使用示例:
HTTP GET 协议(以curl命令为例):
curl "http://127.0.0.1:11211/?opt=set&charset=utf-8&key=username&value=daizhj&exptime=(unix时间戳,设置有效期)"
HTTP POST 协议(以curl命令为例):
打开浏览器:
如果set成功,返回:LLServer_SET_OK
如果set失败,返回:LLServer_SET_ERROR
获取数据:
HTTP GET 协议(以curl命令为例):
curl "http://127.0.0.1:11211/?opt=get&charset=utf-8&key=username"
打开浏览器:
如果get成功,返回相应数据信息
如果get失败,返回:LLServer_GETKEY_ERROR
删除数据:
HTTP GET 协议(以curl命令为例):
curl "http://127.0.0.1:11211/?opt=delete&key=username"
打开浏览器:
如果delete成功,返回:LLServer_DELETE_OK
如果delete失败,返回:LLServer_DELETE_ERROR
删除全部数据:
HTTP GET 协议(以curl命令为例):
curl "http://127.0.0.1:11211/?opt=deleteall&key=username"
打开浏览器:
如果delete成功,返回:LLServer_DELETEALL_OK
如果delete失败,返回:LLServer_DELETEALL_ERROR
使用telnet链接示例(基于memcached协议):
set操作:
client => set username 0 0 6
daizhj
llserver=> STORED
get操作:
client=> get username
llserver=> daizhj
delete操作:
client=> delete username
llserver=> DELETED
quit:
client=> quit
llserver=> close client_fd
version:
client=> version
llserver=>1.0
客户端 C#源码包:
1.这里将Discuz!NT使用的memcached 客户端(已修改过部分代码),大家可以使用它(支持链接池)来直接访问LLServer,相应的示例在压缩包的MemcachedApp\MemcachedApp\sample\sample_1.aspx中。
下载地址:https://files.cnblogs.com/daizhj/MemcachedApp_llserver.rar
2.当然也可以使用c#的httpwebrequest来直接访问,比如(代码源自discuz!nt):
{
/// <summary>
/// http POST请求url
/// </summary>
/// <param name="url">请求的url链接</param>
/// <param name="method">方法名称,如"POST", "GET"</param>
/// <param name="postData">方法名称为"POST"时,所有提交的数据</param>
/// <returns></returns>
public static string GetHttpWebResponse(string url, string method, string postData)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = method;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = string.IsNullOrEmpty(postData) ? 0 : postData.Length;
//request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
request.Timeout = 60000;
HttpWebResponse response = null;
try
{
if (!string.IsNullOrEmpty(postData))
{
StreamWriter swRequestWriter = new StreamWriter(request.GetRequestStream());
swRequestWriter.Write(postData);
if (swRequestWriter != null)
swRequestWriter.Close();
}
response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
catch
{
return null;
}
finally
{
if (response != null)
response.Close();
}
}
//这里发送请求并返回数据
string result = GetHttpWebResponse("http://127.0.0.1:11211/?opt=get&charset=utf-8&key=username", "GET", null);
当然你可也以用其它语言的memcached客户端来访问LLServer,不过有一点要说明的是,目前llserver只存储序列化的字符串对象,如果你的数据为泛型或数组等类型,请先序列化之后再进行存储。
还有就是在c#里可以对数据进行二进制序列化,这里必须将序列化后的对象进行base64位编码之后再存储,否则会报异常,切记。
http://blog.nosqlfan.com/html/2882.html LevelDB内部实现
好了,大家下载体验一下吧,操作数据速度飞快呀。
作者: daizhj, 代震军
微博: http://weibo.com/daizhj
Tags: libevent,leveldb,llserver,key/value db