cassandra 如何在Java/Scala中生成TimeUUID

kyxcudwk  于 2022-11-29  发布在  Cassandra
关注(0)|答案(4)|浏览(168)

有人知道如何在Java/Scala中生成基于时间的UUID吗?
下面是柱族:

CREATE table col(ts timeuuid)

我用的是Cassandra1.2.4
感谢您的帮助!

mzillmmw

mzillmmw1#

如果您使用的是Datastax驱动程序,则可以使用实用程序类UUIDs来生成一个

import com.datastax.driver.core.utils.UUIDs;
....
UUID timeBasedUuid = UUIDs.timeBased();
wlwcrazw

wlwcrazw3#

对于cassandra cli和列名,我使用的是相同的方法
第一个

更新

主要取决于行键,如果rowKey是userId或其他值,则不可能在毫秒内提交重复记录,但如果您认为可以重复,则使用

val timestamp = com.eaio.uuid.UUIDGen.newTime().toString
j9per5c4

j9per5c44#

这是为cassandra 4.x版本工作
首先,在build.sbt中导入库

libraryDependencies ++= Seq(
  "com.datastax.oss" % "java-driver-core" % "4.15.0"
)

这些例子

import com.datastax.oss.driver.api.core.uuid.Uuids

import java.time.ZonedDateTime

object Test extends App {
  val timeText = "2022-01-01T00:01:01.002345Z"
  val datetime = ZonedDateTime.parse(timeText)
  val uuid = Uuids.endOf(datetime.toInstant.toEpochMilli)
  println(uuid) // e79b51af-6a95-11ec-7f7f-7f7f7f7f7f7f
}

Cassandra试验

cqlsh:test> create table aaa (id timeuuid primary key, t text);

cqlsh:test> insert into aaa(id,t) values(e79b51af-6a95-11ec-7f7f-7f7f7f7f7f7f, 't4');

cqlsh:test> select toTimestamp(id), t from aaa;

 system.totimestamp(id)          | t
---------------------------------+----
 2022-01-01 00:01:01.002000+0000 | t4

相关问题