免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1152 | 回复: 0

HandlerSocket Haskell client 0.0.3 [复制链接]

论坛徽章:
0
发表于 2011-12-23 03:43 |显示全部楼层
近期使用到了日本人开发的Handlersocket, 这是一个适用于Mysql InnoDB引擎的nosql数据库接口.
它使用C++实现,寄生在mysql服务器中,通过独立的几个端口进行服务,类似于memcache, 但是其协议更贴近数据库,可以进行定量的查询(limit/skip)/插入/update/update并返回原值等多种和sql等价的操作,但是不经过sql层.

Handlersocket的主页在github上:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

我为它编写了一个Haskell客户端API:
https://github.com/wuxb45/HandlerSocket-Haskell-Client
http://hackage.haskell.org/package/HandlerSocketClient

用cabal即可安装:
cabal install HandlerSocketClient


使用:
假设server端已经配置好,客户端可以非常简单地进行一些常用操作,并且还能用更低级的API完成一切复杂的操作.


haskell测试代码:
main = do
 hs <- connectTo "127.0.0.1" "9999"
 r1 <- runReqOpen hs "test" "t1" "PRIMARY" "k,v"
 putStrLn $ show r1
 r2 <- runReqFind hs ">" "1" 100
 putStrLn $ show r2
 r3 <- runReqInsert hs ["99", "77"]
 putStrLn $ show r3
 r4 <- runReqUpdate hs "99" ["101", "77"]
 putStrLn $ show r4
 r5 <- runReqDelete hs "101"
 putStrLn $ show r5
 r6 <- runReqGeneric hs ["0","+","2","555","999"]
 putStrLn $ show r6

对于varchar的项,直接可以存入2进制串,包括0.
open操作的第四个参数必须使用"PRIMARY", 
而最后一个参数要给出用逗号分隔的key,values字段,
对于多个字段也是支持的,
 key字段一定要是PRIMARY,并且只有1个PRIMARY.
建表语句示例:
create table test.t1 (k int primary key, v varchar(1000))engine=InnoDB;
注意主键和指定InnoDB;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP