색인 앞 또는 끝에 있지 않은 색인을 사용하면 비용이 많이 들며 O (N)가됩니다. 큰 목록의 경우 이는 그리 효율적이지 않습니다.
필요에 따라 해시를 사용하는 것이 더 적합 할 수 있습니다. 이것은 목록보다 많은 메모리를 사용하지만 거의 O (1) 액세스를 제공합니다.
redis의 해시는 임의의 필드와 값을 포함 할 수있는 명명 된 키입니다.
전체 사용자 레코드를 member_id를 사용하여 명명 된 단일 redis 해시에 저장할 수 있습니다 (이 값은 짧은 값이기를 바랍니다). "42 사용자"는 MEMBER_ID가 사용자 별 고유 보장, 여기 MEMBER_ID (42)
hset user:42 email [email protected]
hset user:42 username foobar
hset user:42 logincount 0
레디 스 "키 이름"여기에 사용자의 해시를 채우는 방법이다. 각 사용자는 SQL 데이터베이스의 단일 행과 유사한 단일 키를 얻지 만보다 유연합니다. 그런 다음 두 개의 보조 해시를 업데이트 할 수 있습니다. 하나는 사용자 이름을 member_id에 매핑하고 다른 하나는 전자 메일 주소를 member_id에 매핑하는 것입니다. 이것은 member_id, 사용자 이름 및 전자 메일 주소 사이에 1 : 1 관계가 있다고 가정합니다.
hset username_to_id foobar 42
hset email_to_id [email protected] 42
당신이, 당신이 첫 번째 키 사용자의 해시에서 email
필드를 검색 한 후 email_to_id
해시에서 MEMBER_ID를 검색하고 특정 사용자의 이메일 주소를 조회해야
: 마찬가지로
MEMBER_ID, 당신 사용자 이름으로 시작하여
username_to_id
해시의 member_id를 조회 한 다음 사용자에 저장된 사용자 레코드 :
member_id
해시로 이동할 수 있습니다. "
사용자"해시
이
redis> hget email_to_id [email protected]
"42"
redis> hget user:42 username
"foobar"
redis>
당신은 더 많은 필드를 추가하여 사용자에게 더 레코드를 추가 할 수 있습니다 : 여기
는 이메일 주소를 주어진 이름을 찾는 예이다. 당신이 로그인 카운터를 증가하려면, 그뿐만 아니라 간단합니다 : 당신은 redis.io 사이트에서
more information about hashes을 찾을 수 있습니다
redis> hincrby user:42 login_count 1
(integer) 1
redis> hgetall user:42
1. "email"
2. "[email protected]"
3. "username"
4. "foobar"
5. "login_count"
6. "1"
redis>
.
감사합니다. 하지만 설정 또는 정렬하지 왜 설정 – Leon
하지만 1m의 사용자 thats 뜻은 1m 해시 id, u는 특정 얻을 때, 그것은 성능을 줄일 것인가? – Leon