参考地址 http://wiki.apache.org/cassandra/FAQ#working_with_timeuuid_in_java
下载一个包 http://johannburkard.de/software/uuid/
代码示例:
代码import java.util.List;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.TException;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.SlicePredicate;
import org.apache.cassandra.thrift.SliceRange;
import org.apache.cassandra.thrift.TimedOutException;
import org.apache.cassandra.thrift.UnavailableException;
public class test {
public static void main(String[] args) throws Exception, InvalidRequestException, UnavailableException, TimedOutException, TException {
byte[] uuid = asByteArray(getTimeUUID());
TTransport tr = new TSocket("localhost", 9160);
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
tr.open();
String key_user_id = "123";
long timestamp = System.currentTimeMillis();
ColumnPath cp =new ColumnPath();
cp.setColumn(uuid);
cp.setColumn_family("StandardByUUID1");
client.insert("Keyspace1",
key_user_id,
cp,
"Some thing here".getBytes("UTF-8"),
timestamp,
ConsistencyLevel.ONE);
SliceRange sr = new SliceRange(new byte[0], new byte[0], false, 10);
SlicePredicate predicate = new SlicePredicate();
predicate.setSlice_range(sr);
ColumnParent parent = new ColumnParent();
parent.setColumn_family("StandardByUUID1");
List<ColumnOrSuperColumn> results = client.get_slice("Keyspace1", key_user_id, parent, predicate, ConsistencyLevel.ONE);
for (ColumnOrSuperColumn result : results)
{
Column column = result.column;
System.out.println(toUUID(column.name).toString() + " -> " + new String(column.value, "UTF-8"));
}
tr.close();
System.out.println("done.");
}
public static java.util.UUID getTimeUUID()
{
return java.util.UUID.fromString(new com.eaio.uuid.UUID().toString());
}
public static byte[] asByteArray(java.util.UUID uuid)
{
long msb = uuid.getMostSignificantBits();
long lsb = uuid.getLeastSignificantBits();
byte[] buffer = new byte[16];
for (int i = 0; i < 8; i++) {
buffer[i] = (byte) (msb >>> 8 * (7 - i));
}
for (int i = 8; i < 16; i++) {
buffer[i] = (byte) (lsb >>> 8 * (7 - i));
}
return buffer;
}
public static java.util.UUID toUUID( byte[] uuid )
{
long msb = 0;
long lsb = 0;
assert uuid.length == 16;
for (int i=0; i<8; i++)
msb = (msb << 8) | (uuid[i] & 0xff);
for (int i=8; i<16; i++)
lsb = (lsb << 8) | (uuid[i] & 0xff);
long mostSigBits = msb;
long leastSigBits = lsb;
com.eaio.uuid.UUID u = new com.eaio.uuid.UUID(msb,lsb);
return java.util.UUID.fromString(u.toString());
}
}
使用cassandra-cli查询结果:
输出结果:
9a3212f0-7584-11df-9632-001fe210d7db -> Chris Goffinet
fa6685c0-7584-11df-8856-001fe210d7db -> Some thing here
done.