以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");
}
}