• 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], false10);
            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. 

  • 相关阅读:
    Shiro自定义密码匹配认证
    logback 发送邮件和自定义发送邮件;java类发送邮件
    webVR全景图多种方案实现(pannellum,aframe,Krpano,three,jquery-vrview)
    前端接受后端文件流并下载的几种方法
    回流(reflow)与重绘(repaint)
    JS数组去重的几种常见方法
    React 生命周期
    浅谈React工作原理
    如何在Vue项目中使用vw实现移动端适配
    移动端web整理 移动端问题总结,移动web遇到的那些坑
  • 原文地址:https://www.cnblogs.com/mobile/p/1756216.html
Copyright © 2020-2023  润新知