前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cassandra Java 使用TimeUUIDType

Cassandra Java 使用TimeUUIDType

作者头像
用户3135539
发布2018-09-12 11:09:50
9800
发布2018-09-12 11:09:50
举报
文章被收录于专栏:

参考地址 http://wiki.apache.org/cassandra/FAQ#working_with_timeuuid_in_java

下载一个包 http://johannburkard.de/software/uuid/

代码示例:

代码语言:javascript
复制
代码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. 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-06-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档