클래스
RedisOrderedDict(collections.MutableMapping):
def 코드> <코드 클래스 ="일반 "> __ 초기화__ (
<코드 클래스 = "color1"> 자체 <코드 클래스 = "일반">, r, 이름):
자기
._ r
=
<코드 클래스 = "color1"> 자체 <코드 클래스 = "일반"> ._name <코드 클래스 = "키워드" > = <코드 클래스 = "일반"> encode_key(이름)
<코드 클래스 = "정의되지 않은 공백" >
< 코드 클래스 = "keyword"> def __ iter __ (
자체
):
반환
iter
def
__ len __ (
자체
):
반환
자체
<코드 클래스 = "일반"> ._r.zcard ( <코드 클래스 = "color1"> 자체 <코드 클래스 = "일반"> ._ 이름)
def
__ getitem __ (
자기
, key):
반환
자기
._ r.zscore (
자기
. _이름, 인코딩_키(키))
코드 > <코드 클래스 = "키워드"> def
__ setitem __ (
자기
, 키, 점수):
self
._r.zadd(
자기
._ 이름, encode_key(키), 점수)
def
__ delitem __ (
자기
, 키):
자기
._ r.zrem (
자체
._ 이름, e ncode_key(키))
def
키(
자체
, 시작
=
<코드 클래스 = "값"> 0 <코드 클래스 = "일반">, 끝 <코드 클래스 = "키워드" > = <코드 클래스 = "키워드"> - <코드 클래스 = "값"> 1 <코드 클래스 = "일반">):
<코드 클래스 = " 코멘트" > # zrevrange를 사용하여 키를 정렬합니다.
#
< 대신 값으로 /p>
가장 낮은
반환
자기
._ r.zrevrange (
자기
._ 이름, 시작, 끝) < /코드>
<코드 클래스 = "정의되지 않은 공백">
<코드 클래스 = "키워드"> def <코드 클래스="일반 "> 값 ( 자체
, 시작
=
<코드 클래스 = "값"> 0 <코드 클래스 = "일반">, 끝 <코드 클래스 = "키워드"> = <코드 클래스 = "키워드"> - 1
):
반환
[v
for
( k, v)
in
자체
. 항목(시작
=
시작, 끝
=
end)]
def
항목( 코드 > <코드 클래스 = "color1"> 자체
<코드 클래스 = "일반">, 시작 <코드 클래스 = "키워드"> = <코드 클래스 = "값"> 0 , end
=
-
1
):
반환
자기
._ r.zrevrange (
자기
._ 이름, 시작, 끝, 점수 포함
=
True
)
def
get (
자체
, 키, 기본값
=
0
):
return
자기
[키]
또는
기본
<코드 클래스 = "keyword"> def iteritems (
자체
):
반환
iter
(
자기
)
def
지우기(
자체
):
self
._ r.delete (
자기
._ 이름)
코드: Redis 연결 및 고유 이름을 전달하여 RedisOrderedDict 인스턴스를 생성합니다.
redis
가져오기
Redis
from
rediscollections
가져오기
RedisOrderedDict
<코드 클래스 = "일반"> r <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> Redis ()
<코드 클래스 = "일반"> 막대 <코드 클래스 = "키워드"> = <코드 클래스 = " plain"> RedisOrderedDict (r, `테스트`
<코드 클래스 ="일반 "> rod.get( <코드 클래스 ="문자열 ">` 막대` )
막대 [
<코드 클래스 = "문자열"> `바` <코드 클래스 = "일반">] <코드 클래스 = "키워드"> = <코드 클래스 = "값"> 5.2
<코드 클래스 = "키워드" > 인쇄 <코드 클래스 = "일반"> (막대 [ <코드 클래스 = "문자열 "> `바` <코드 클래스 ="일반 ">])
인쇄
<코드 클래스 = "plain"> ( len
(막대))
인쇄
(rod.items ())
막대. 지우기()
종료:
0 5.2000000000000002 1 [(b`bar`, 5.2)]
대부분의 코드는 비슷하게 보일 수 있습니다. ar를 RedisHashMap으로 변환합니다. 이는 둘 다 컬렉션 을 확장하기 때문에 예상되는 것입니다. 주요 차이점은 RedisOrderedSet 는 부동 소수점 값으로 키를 정렬하므로 RedisHashMap 과 같은 키 값의 임의 저장에는 적합하지 않습니다.
각 주요 방법과 Redis에서 작동하는 방법을 설명하는 스케치:
- __len __ (): zcard 명령은 항목 수를 가져오는 데 사용됩니다. 주문한 세트.
- __getitem __ (): zscore 명령을 사용하여 키에 대한 점수를 얻고 키가 없으면 0을 반환합니다.
- __ setitem __ (): 이 명령은 zadd 명령을 사용하여 지정된 점수로 정렬된 집합에 키를 추가하거나 키가 이미 있는 경우 점수를 업데이트합니다.
- __deitem __ (): zrem 명령은 순서가 지정된 집합에서 키를 제거하는 데 사용됩니다.
- 키(): zrevrange 명령은 가장 높은 점수를 기준으로 정렬된 집합의 모든 키를 가져오는 데 사용됩니다. 순서가 지정된 키 조각을 더 효율적으로 얻으려면 두 개의 선택적 키워드 인수인 start 및 end가 필요합니다.