큰 문자열 목록 (사용자 이름, 약 350K 레코드 포함)이 있습니다. 나는 그것을 사전 적 순서에 따라 정렬하여 저장해야하며, 구성원 존재 *와 구성원 유사성 **을 효율적으로 검색 할 수 있어야합니다. Redis 정렬 된 세트는 작업의 데이터 유형과 유사합니다.대소 문자 구별법의 사전 정렬 방식으로 대소 문자 구분 정렬
그러나 나는 첫 번째 장애물에 떨어지는 것 같습니다. 특히, 중요한 요구 사항 중 하나는 같은 문자로 시작하는 한 다른 문자 사례를 함께 유지하는 것입니다. 예 : Bender
과 bender
은 모두 나란히 정렬되어야합니다. 그러나 redis 정렬 집합은 엄격한 사전 순서 규칙을 따르므로 대문자로 시작하는 모든 문자열은 기본적으로 모든 문자열이 소문자로 시작하기 전에 정렬됩니다 (예 : 은 a
보다 앞에 있지만, A
이후).
이 문제를 해결할 수있는 방법이 있습니까? 또한 요구 사항을 충족시키기 위해 redis 정렬 된 세트를 사용하고 있습니까? 참고로 Redis 버전 2.8.4를 사용하고 있습니다. 미리 감사드립니다.
* 회원 존재 : 사용자 이름 주어진 N에게 주어진 이름
같은 대부분이다 저장된 사용자 이름을 올려 : 사용자 이름 주어진, 그것은 이미 설정 저장** 회원의 모습으로 존재하는지 여부를 확인
[대소 문자와 악센트를위한 문자열 정규화] (https://redis.io/topics/indexes#normalizing-strings-for-case-and-accents) – thepirat000
@ thepirat000 : 이것은 훌륭한 글입니다. Redis 2.8.4에서는 사용할 수없는 ZRANGEBYLEX 만 사용합니다. 나는 이전 버전의 같은 것을 구현할 수 있습니다 : http://oldblog.antirez.com/post/autocomplete-with-redis.html, 제외 어 사전 적으로 불가 지론. –