우리가
레디 스 키 이진 문자열이기 때문에
키에 따라 특정 순서로 키 - 값 쌍을 저장해야 할 몇 가지 사용 사례가 있어야합니다, 나는 특정 순서는 당신이 언급 한 가정 (즉, 키는
memcmp
함수와 비교됩니다). 이 경우 C++의
std::map
을
SORTED SET
으로 쉽게 구현할 수 있습니다. 당신은 2 단계로 이것을 달성 할 수하십시오
SORTED SET
2 개 요소가 같은 점수가있는 경우
빌드 성병은 : 레디 스 '소트 세트
설정, 그들은 사전 편찬 순서로 정렬하고 있습니다. 그래서 그냥 같은 점수로 SORTED SET
의 모든 구성원을 제공하는 std::set
를 구축하기 위해 :
zadd std::set 0 c
zadd std::set 0 a
zadd std::set 0 b
// since all these members have the same score,
// the result is lexicographical ordered:
// a b c
zrange std::set 0 -1
// the following command will fail, since 'c' already exists.
zadd std::set 0 c
레디 스 2.8, 당신은 std::set::lower_bound
에 비슷한을 구축 할 수 있도록 사전 편찬 범위에서 작동하는 it supports some commands, 또는 이후 std::set::upper_bound
// something similar to lower_bound: find all members not less than b
zrangebylex std::set [b +
// something similar to upper_bound: find all members greater than b
zrangebylex std::set (b +
값
,536과 세트의 각 키를지도
이미 std::set
을 얻었으므로 키를 값과 매핑하면 std::map
을 얻을 수 있습니다.
set a value_a
set b value_b
set c value_c
는이 함께
당신은 루아 스크립트로 전체 작업을 마무리 할 수 이러한 두 단계를 결합 내장std::map
. 다음과 같이 사용하십시오.
redis-cli --eval map.lua map_name , key value
감사합니다. 나는'zadd a value_a'라고 생각합니다. 여기서'a'는 열쇠이고'value_a'는 redis 관점의 값입니다. 그러나 실제로'a'는 정렬 된 집합의 이름이고'value_a'는 그 요소입니다. 'std :: map'과 같으면 구문은'zadd std :: map key value'가됩니다. –
Redis에는 그러한 데이터 구조가 없으므로, 답안에서 언급 한 것처럼 2 단계를 구현해야합니다. 루아 스크립트에서이 단계들을 감쌀 경우 * 내장 된'std :: map' :'redis-cli --eval map.lua std :: map, key value'를 얻을 수 있습니다. –