klasa
RedisOrderedDict (collections.MutableMapping):
def
__ init__ (
self
, r, name):
self
._ r
=
r
self
._name
=
encode_key (nazwa)
def
__ iter __ (
self
return
iter
self
. items ())
def
__ len __ (
self
):
return
self
._r.zcard (
self
._ name)
def
__ getitem __ (
self
, klucz):
return
self
._ r.zscore (
self
. _name, encode_key (klucz))
def
__ setitem __ (
self
, klucz, wynik):
self
._r.zadd (
self
._ nazwa, encode_key (klucz), wynik
def
__ delitem __ (
self
, klucz):
self
._ r.zrem (
self
._ name, e ncode_key (klucz))
def
klucze (
self
, start
=
0
, koniec
=
-
1
):
# używamy zrevrange do sortowania kluczy
# według wartości zamiast
najniższy
return
self
._ r.zrevrange (
self
._ name, start, end)
def
wartości (
self
, start
=
0
, end
=
-
1
):
return
[v
for
( k, v)
in
self
. items (start
=
start, end
=
end)]
def
items ( co de >
self
, start
=
0
, end
=
-
1
):
return
self
._ r.zrevrange (
self
._ name, start, end, withscores
=
True
)
def
get (
self
, klucz, domyślny
=
0
):
return
self
[klucz]
lub
domyślna
def
iteritems (
self
):
return
iter
(
self
)
def
clear (
self
):
self
._ r.delete (
self
._ name)
Kod: Utwórz instancję RedisOrderedDict, przekazując połączenie Redis i unikalną nazwę
z
redis
import
Redis
z
ponowne kolekcje
importuj
RedisOrderedDict
r
=
Redis ()
pręt
=
RedisOrderedDict (r,
`test`
rod.get (
` bar`
)
pręt [
`bar`
]
=
5.2
print
(rod [
`bar`
])
print
(
len
(rod))
print
(rod.items ())
rod. wyczyść ()
Wyjście:
0 5.2000000000000002 1 [(b`bar`, 5.2)]
Większość kodu może wyglądać podobnie ar do RedisHashMap, czego można się spodziewać, ponieważ oba rozszerzają kolekcje . Główna różnica polega na tym, że RedisOrderedSet porządkuje klucze według wartości zmiennoprzecinkowych i dlatego nie nadaje się do arbitralnego przechowywania wartości kluczy, takich jak RedisHashMap .
Szkice wyjaśniające każdą kluczową metodę i sposób, w jaki działają z Redis:
- __len __ (): polecenie zcard służy do pobrania liczby elementów w zamówiony zestaw.
- __getitem __ (): używa polecenia zscore, aby uzyskać wynik dla klucza i zwraca 0, jeśli klucz nie istnieje.
- __ setitem __ (): to polecenie używa polecenia zadd, aby dodać klucz do uporządkowanego zestawu z podanym wynikiem lub zaktualizować wynik, jeśli klucz już istnieje.
- __delitem __ (): Polecenie zrem służy do usunięcia klucza z uporządkowanego zestawu.
- klucze (): Polecenie zrevrange służy do sortowania wszystkich kluczy w uporządkowanym zestawie według najwyższego wyniku. Aby wydajniej uzyskać fragment uporządkowanych kluczy, potrzebne są dwa opcjonalne argumenty słów kluczowych, start i end.