PNL | Armazenando um dicionário classificado no Redis

| | | | | | |

class RedisOrderedDict (collections.MutableMapping):

def __ init__ ( self , r, name):

self ._ r = r

self ._name = encode_key (nome)

def __ iter __ ( self ):

return iter ( self . items ())


def __ len __ ( self ):

return self ._r.zcard ( self ._ name)


def __ getitem __ ( self , chave):

return self ._ r.zscore ( self . _name, encode_key (chave))


def __ setitem __ ( self , chave, pontuação):

self ._r.zadd ( self ._ nome, encode_key (chave), pontuação)

def __ delitem __ ( self , chave):

self ._ r.zrem ( self ._ name, e ncode_key (key))


def chaves ( self , start = 0 , end = - 1 ):

# usamos zrevrange para classificar chaves

# por valor em vez de

mais baixo

return self ._ r.zrevrange ( self ._ name, start, end)

def valores ( self , início = 0 , end = - 1 ):

return [v para ( k, v) em self . itens (início = início, fim = end)]


def itens ( self , início = 0 , end = - 1 ):

return self ._ r.zrevrange ( self ._ name, start, end, withscores = True )

def get ( self , chave, padrão = 0 ):

return self [chave] ou default


def iteritems ( self ):

return iter ( self )


def clear ( self ):

self ._ r.delete ( self ._ name)

Código: crie uma instância RedisOrderedDict passando uma conexão Redis e um nome exclusivo

from redis import Redis

from rediscollections import RedisOrderedDict


r = Redis()

rod = RedisOrderedDict (r, `test` )

rod.get ( ` bar` )

rod [ `bar` ] = 5.2

print (rod [ `bar` ])


imprimir ( len (rod))


print (rod.items ())


rod. clear()

Sair:

 0 5.2000000000000002 1 [(b`bar`, 5.2)] 

A maior parte do código pode parecer semelhante ar para RedisHashMap, o que é esperado, pois ambos estendem coleções . A principal diferença é que RedisOrderedSet ordena chaves por valores de ponto flutuante e, portanto, não é adequado para armazenamento arbitrário de valores de chave, como RedisHashMap .
Esboços explicando cada método-chave e como eles funcionam com o Redis:

  • __len __ (): o comando zcard é usado para obter o número de itens em um conjunto ordenado.
  • __getitem __ (): usa o comando zscore para obter a pontuação de uma chave e retorna 0 se a chave não existir.
  • __ setitem __ (): este comando usa o comando zadd para adicionar uma chave ao conjunto ordenado com uma determinada pontuação, ou atualizar a pontuação se a chave já existir.
  • __delitem __ (): O comando zrem é usado para remover uma chave do conjunto ordenado.
  • chaves (): O comando zrevrange é usado para obter todas as chaves no conjunto ordenado classificadas pela pontuação mais alta. Para obter um snippet de chaves ordenadas com mais eficiência, são necessários dois argumentos de palavra-chave opcionais, start e end.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method