복붙노트

[REDIS] UUID 단축

REDIS

UUID 단축

나는 응용 프로그램의 고유 한 사용자의 일상 수를 계산해야합니다.

나는 사용자를 고유하게 식별 할 수있는 유일한 방법은 (내가 그것을 사용하도록 강요하고 있으므로이 외부에서 공급) 자신의 UUID를 통해입니다.

나는 매일 사용자 수가 백만 사용자의 부부 것을 알고있다.

나는 인구 수를 할 레디 스의 비트 세트를 사용하고 싶습니다하지만 편안하게 긴에 맞게 수 있도록 작업이 위해서는, 내 UUID를 축소하는 방법을 필요 했어. 나는 충돌의 가능성을 알고 있지만 정확한 숫자에 대해 우려하고 있지 않다.

사람이 전에 자바에서 이런 짓을 했습니까? 내가 후 나는 것은 내가 오래에 맞게 수있는 무언가로 내 UUID를 변환 할 수있는 방법이다.

해결법

  1. ==============================

    1.당신이 혜택을 수있는 UUID 개체에 대한 두 가지 방법이 있습니다.

    당신이 혜택을 수있는 UUID 개체에 대한 두 가지 방법이 있습니다.

    getLeastSignificantBits ()와 getMostSignificateBits (). 둘 다 오래를 반환합니다. 당신의 대답 이러한 갈망 하나 가지고 (또는 조합의 어떤 종류의 당신이 걱정하는 경우입니다.)

  2. ==============================

    2.당신의 int 또는 정수 (Long)를 생성하여 UUID를의 해시를 생성하고 인구 수에 대한 그들을 사용할 수 있습니다.

    당신의 int 또는 정수 (Long)를 생성하여 UUID를의 해시를 생성하고 인구 수에 대한 그들을 사용할 수 있습니다.

    보고 jedis 레디 스 라이브러리의`redis.clients.util.MurmurHash '를 가지고있다. 당신은 https://github.com/xetorthio/jedis에서 찾을 수 있습니다

    * 편집 : 샘플

            UUID uuid = UUID.randomUUID();
            ByteBuffer buf = ByteBuffer.allocate(16).putLong(uuid.getMostSignificantBits()).putLong(uuid.getLeastSignificantBits());
            buf.flip();
            int useMe= MurmurHash.hash(buf, 123);
    
  3. ==============================

    3.이것은 아마도 해시 키로서 전체 UUID를 사용하여 직접 맞는 작은 충분하다. 근사는 또한 사용자의 요구 제품군 경우 적은 메모리를 사용하여 만들 수 있습니다.

    이것은 아마도 해시 키로서 전체 UUID를 사용하여 직접 맞는 작은 충분하다. 근사는 또한 사용자의 요구 제품군 경우 적은 메모리를 사용하여 만들 수 있습니다.

  4. from https://stackoverflow.com/questions/11496277/uuid-shortening by cc-by-sa and MIT license