目录:
- 概述
- 演示
[一]、概述
java实现了对ttserver服务端的连接和访问。相关的源代码和jar包可以到其官网下载。
官网地址:http://code.google.com/p/tokyotyrant-java/
如果是maven构建项目的,在pom.xml 的<dependencies>节点中增加如下依赖配置即可:
2 | < groupId >tokyotyrant</ groupId > |
3 | < artifactId >tokyotyrant</ artifactId > |
4 | < version >0.11</ version > |
7 | < groupId >org.jboss.netty</ groupId > |
8 | < artifactId >netty</ artifactId > |
9 | < version >3.1.5.GA</ version > |
12 | < groupId >org.slf4j</ groupId > |
13 | < artifactId >slf4j-api</ artifactId > |
14 | < version >1.5.6</ version > |
17 | < groupId >org.slf4j</ groupId > |
18 | < artifactId >slf4j-log4j12</ artifactId > |
19 | < version >1.5.6</ version > |
20 | < scope >runtime</ scope > |
21 | < optional >true</ optional > |
[二]、演示
1.RDB :官方Tokyo Tyrant API的实现
演示代码:RDBExample.java
1 | package com.micmiu.nosql.ttserver; |
3 | import java.io.IOException; |
4 | import java.net.InetSocketAddress; |
6 | import tokyotyrant.RDB; |
7 | import tokyotyrant.transcoder.DoubleTranscoder; |
8 | import tokyotyrant.transcoder.IntegerTranscoder; |
17 | public class RDBExample { |
19 | public static void main(String[] args) throws IOException { |
25 | db.open( new InetSocketAddress( "192.168.126.134" , 1978 )); |
30 | if (db.put( "my_firstname" , "Sun" )) { |
31 | System.out.println( "db put my_firstname successful." ); |
33 | System.out.println( "db put my_firstname error." ); |
36 | if (db.put( "my_lastname" , "Michael" )) { |
37 | System.out.println( "db put my_lastname successful." ); |
39 | System.out.println( "db put my_lastname error." ); |
42 | if (db.put( "my_blogurl" , "www.micmiu.com" )) { |
43 | System.out.println( "db put my_blogurl successful." ); |
45 | System.out.println( "db put my_blogurl error." ); |
48 | if (db.put( "my_weibo" , "www.sina.com/ctosun" )) { |
49 | System.out.println( "db put my_weibo successful." ); |
51 | System.out.println( "db put my_weibo error." ); |
55 | value = db.get( "my_blogurl" ); |
56 | System.out.println( "test_blogurl =: " + value); |
58 | value = db.get( "test_noexit" ); |
59 | System.out.println( "test_noexit =: " + value); |
61 | System.out.println( "===== test repeat put " ); |
62 | db.put( "test_desc" , "hello world" ); |
63 | System.out.println( "test_desc =: " + db.get( "test_desc" )); |
64 | db.put( "test_desc" , "repeat put value is hello Michael" ); |
65 | System.out.println( "test_desc =: " + db.get( "test_desc" )); |
68 | System.out.println( "===== access all key " ); |
70 | while ((key = db.iternext()) != null ) { |
72 | System.out.println(key + " =: " + value); |
74 | System.out.println( "===== test int double " ); |
76 | db.put( "int_i" , 3 , new IntegerTranscoder()); |
77 | int i = db.addint( "int_i" , 4 ); |
78 | System.out.println( " i =: " + i); |
79 | System.out.println( "int_i =: " |
80 | + db.get( "int_i" , new IntegerTranscoder())); |
83 | db.put( "dou_d" , 3 .0D, new DoubleTranscoder()); |
84 | double d = db.adddouble( "dou_d" , 4 .0D); |
85 | System.out.println( " d =: " + d); |
86 | System.out.println( "dou_d =: " |
87 | + db.get( "dou_d" , new DoubleTranscoder())); |
89 | } catch (Exception e) { |
运行日志如下:
db put my_firstname successful.
db put my_lastname successful.
db put my_blogurl successful.
db put my_weibo successful.
test_blogurl =: www.micmiu.com
test_noexit =: null
===== test repeat put
test_desc =: hello world
test_desc =: repeat put value is hello Michael
===== access all key
my_firstname =: Sun
my_lastname =: Michael
my_blogurl =: www.micmiu.com
my_weibo =: www.sina.com/ctosun
test_desc =: repeat put value is hello Michael
===== test int double
i =: 7
int_i =: 7
d =: 7.0
dou_d =: 7.0
2.MRDB :用于多数据源,可复制、可靠性高、响应快等特点
演示代码:MRDBExample.java
1 | package com.micmiu.nosql.ttserver; |
3 | import tokyotyrant.MRDB; |
4 | import tokyotyrant.networking.NodeAddress; |
13 | public class MRDBExample { |
19 | public static void main(String[] args) throws Exception { |
28 | if (db.await(db.put( "my_firstname" , "Sun" ))) { |
29 | System.out.println( "MRDB put my_firstname successful." ); |
31 | System.out.println( "MRDB put my_firstname error." ); |
34 | if (db.await(db.put( "my_lastname" , "Michael" ))) { |
35 | System.out.println( "MRDB put my_lastname successful." ); |
37 | System.out.println( "MRDB put my_lastname error." ); |
40 | if (db.await(db.put( "my_blogurl" , "www.micmiu.com" ))) { |
41 | System.out.println( "MRDB put my_blogurl successful." ); |
43 | System.out.println( "MRDB put my_blogurl error." ); |
46 | if (db.await(db.put( "my_weibo" , "www.sina.com/ctosun" ))) { |
47 | System.out.println( "MRDB put my_weibo successful." ); |
49 | System.out.println( "MRDB put my_weibo error." ); |
53 | value = db.await(db.get( "my_blogurl" )); |
54 | System.out.println( "test_blogurl =: " + value); |
56 | value = db.await(db.get( "test_noexit" )); |
57 | System.out.println( "test_noexit =: " + value); |
59 | System.out.println( "===== test repeat put " ); |
60 | db.put( "test_desc" , "hello world" ); |
61 | System.out.println( "test_desc =: " + db.await(db.get( "test_desc" ))); |
62 | db.put( "test_desc" , "repeat put value is hello Michael" ); |
63 | System.out.println( "test_desc =: " + db.await(db.get( "test_desc" ))); |
68 | db.put( "dou_d" , 8 .8D); |
71 | System.out.println( "===== access all key " ); |
73 | .await(db.fwmkeys( "" , db.size().get().intValue())); |
74 | for (Object keyObj : keys) { |
75 | System.out.println(keyObj + " =: " + db.await(db.get(keyObj))); |
78 | } catch (Exception e) { |
运行结果:
[16:42:42] INFO [tokyotyrant.networking.nio.NioNode] - Connect tcp://192.168.126.134:1978
MRDB put my_firstname successful.
MRDB put my_lastname successful.
MRDB put my_blogurl successful.
MRDB put my_weibo successful.
test_blogurl =: www.micmiu.com
test_noexit =: null
===== test repeat put
test_desc =: hello world
test_desc =: repeat put value is hello Michael
===== access all key
my_firstname =: Sun
my_lastname =: Michael
my_blogurl =: www.micmiu.com
my_weibo =: www.sina.com/ctosun
int_i =: 4
test_desc =: repeat put value is hello Michael
dou_d =: 8.8
[16:42:42] INFO [tokyotyrant.networking.nio.NioNode] - Disconnect tcp://192.168.126.134:1978
[16:42:42] INFO [tokyotyrant.networking.nio.NioNetworking] - Stopped. So will not handle IO. 0 keys will be ignored
————————