以Cassandra 1.0.2为例。java
下载Cassandra1.0.二、Jdk 1.7。(所有推荐最新版本)
Cassandra下载地址:http://cassandra.apache.org/download/
Jre下载地址:http://www.java.com/zh_CN/download/node
(一)、安装Jdk的过程很简单,这里不作说明。数据库
(二) 、解压缩后得到目录apache-cassandra-1.0.2apache
(三)、配置JDK、Cassandra系统环境变量api
一、配置JDK系统环境变量工具
二、配置Cassandra系统环境变量测试
三、将cassandra系统环境变量添加到JDK环境变量中spa
(1)修改其它地址.net
打开文件:cassandra.yaml,修改:code
data_file_directories: - D:\apache-cassandra-1.0.2\data
commitlog_directory: D:\apache-cassandra-1.0.2\commitlog
saved_caches_directory: D:\apache-cassandra-1.0.2\saved_caches
修改后的样子以下:
data_file_directories:
- F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\data
commitlog_directory: F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\commitlog
saved_caches_directory: F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\saved_caches
(1)在命令提示符工具中启动Cassandra:
(2)用nodetool工具确认Cassandra已经启动:
(1)运行cassadnra-cli:
(2)建立keyspace、column family,插入数据:
(3)获取数据:
能够正常执行,说明安装成功。
六、Java客户端代码
(1)、建立java项目的过程很简单,这里不作说明。
(2)、将F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\lib目录下的jar所有拷贝到WEB-INF/lib目录下;
(3)、建立客户端java类,code以下:
package com.tzdr.api.controller;
import org.apache.cassandra.thrift.*;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.List;
public class CassandraExample {
public static void main(String[] args)
throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException {
TTransport tr = new TFramedTransport(new TSocket("localhost", 9160));
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
tr.open();
String key_user_id = "jsmith"; //row id
client.set_keyspace("tzdrdevelop"); //指定keyspace
ColumnParent parent = new ColumnParent("User");
ColumnPath path = new ColumnPath("User");
// 读取单列内容
path.setColumn(toByteBuffer("first"));
ColumnOrSuperColumn col = (client.get(toByteBuffer(key_user_id), path, ConsistencyLevel.ONE));
System.out.println(toString(col.column.name) + " -> " + toString(col.column.value));
// 读取所有列内容
SlicePredicate predicate = new SlicePredicate();
SliceRange sliceRange = new SliceRange(toByteBuffer(""), toByteBuffer(""), false, 10);
predicate.setSlice_range(sliceRange);
List<ColumnOrSuperColumn> results = client.get_slice(toByteBuffer(key_user_id), parent, predicate, ConsistencyLevel.ONE);
for (ColumnOrSuperColumn result : results) {
Column column = result.column;
System.out.println(toString(column.name) + " -> " + toString(column.value));
}
// 向数据库中插入数据
long currentTimeMillis = System.currentTimeMillis();
long nanoTime = System.nanoTime();
long currentTimeMicros = currentTimeMillis * 1000 + nanoTime / 1000 - (nanoTime > 1000000 ? (nanoTime / 1000000) * 1000 : 0);
//注意取microseconds,而不是milliseconds,由于其它客户机都是microseconds。
//若是使用System.currentTimeMillis()致使你的时间永远小于其它客户机的时间,使其操做会被忽略。
System.out.println(currentTimeMicros);
String new_key_user_id = "jsmith"; //row id
Column nameColumn = new Column(toByteBuffer("name"));
nameColumn.setValue(toByteBuffer("Chris Goffinet"));
nameColumn.setTimestamp(currentTimeMicros);
client.insert(toByteBuffer(new_key_user_id), parent, nameColumn, ConsistencyLevel.ONE);
Column pwdColumn = new Column(toByteBuffer("password"));
pwdColumn.setValue(toByteBuffer("12345678"));
pwdColumn.setTimestamp(currentTimeMicros);
client.insert(toByteBuffer(new_key_user_id), parent, pwdColumn, ConsistencyLevel.ONE);
tr.flush();
tr.close();
}
public static ByteBuffer toByteBuffer(String value)
throws UnsupportedEncodingException {
return ByteBuffer.wrap(value.getBytes("UTF-8"));
}
public static String toString(ByteBuffer buffer)
throws UnsupportedEncodingException {
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
return new String(bytes, "UTF-8");
}
}