Cassandra Java 使用TimeUUIDType

参考地址 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查询结果:

Cassandra Java 使用TimeUUIDType_第1张图片

 


输出结果:

9a3212f0-7584-11df-9632-001fe210d7db -> Chris Goffinet

fa6685c0-7584-11df-8856-001fe210d7db -> Some thing here 

done. 

你可能感兴趣的:(cassandra)