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

浙公網安備 33010602011771號