近期使用到了日本人开发的Handlersocket, 这是一个适用于Mysql InnoDB引擎的nosql数据库接口.
它使用C++实现,寄生在mysql服务器中,通过独立的几个端口进行服务,类似于memcache, 但是其协议更贴近数据库,可以进行定量的查询(limit/skip)/插入/update/update并返回原值等多种和sql等价的操作,但是不经过sql层.
Handlersocket的主页在github上:
我为它编写了一个Haskell客户端API:
用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;
阅读(803) | 评论(0) | 转发(0) |