我需要计算应用程序每天的独立用户数。
唯一能够识别用户的方式是通过他们的UUID(这是外部提供的,所以我被迫使用它)。
我知道每天的用户数量是几百万。
我想使用Redis中的位图来进行人口统计,但是为了使其工作,我需要一种将我的UUID缩小到可以适应long类型的方法。我意识到可能会存在碰撞的风险,但我并不担心精确的数字。
有人在Java中做过这个吗?我想知道如何将我的UUID转换为可以适应long类型的内容。
UUID uuid = UUID.randomUUID();
ByteBuffer buf = ByteBuffer.allocate(16).putLong(uuid.getMostSignificantBits()).putLong(uuid.getLeastSignificantBits());
buf.flip();
int useMe= MurmurHash.hash(buf, 123);
UUID
对象有两种方法可能对您有益。
getLeastSignificantBits()
和getMostSignificateBits()
。两者都返回一个长整型。取其中一个长整型作为答案(或者进行某种组合,如果您关心的话)。^
(异或)或类似的方式将这两个值结合起来。 - David Harkness