NLP | Sıralı bir sözlüğü Redis`te saklama

| | | | | | |

class RedisOrderedDict (collections.MutableMapping):

def __ init__ ( self , r, ad):

self ._ r = r

self ._name = encode_key (ad)

< kod sınıfı = "anahtar kelime"> def __ iter __ ( öz ):

dönüş yineleme ( self . öğeler ())


def __ len __ ( self ):

dönüş self ._r.zcard ( self ._ name)


def __ getitem __ ( self , anahtar):

dönüş self ._ r.zscore ( self . _name, encode_key (anahtar))


def __ setitem __ ( self , anahtar, puan):

self ._r.zadd ( self ._ name, encode_key (anahtar), puan)

def __ delitem __ ( self , anahtar):

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


def tuşları ( self , start = 0 , bitiş = - 1 ):

# anahtarları sıralamak için zrevrange kullanıyoruz

# < yerine değere göre /p>

en düşük

dönüş self ._ r.zrevrange ( self ._ ad, başlangıç, bitiş)

def değerler ( self , start = 0 , end = - 1 ):

dönüş [v for ( k, v) self . öğeler (start = start, end = end)]


def öğeler ( self , start = 0 , end = - 1 ):

dönüş self ._ r.zrevrange ( self ._ name, start, end, withscores = True )

def get ( self , key, default = 0 ):

dönüş self [anahtar] veya varsayılan


def yinelemeler ( self ):

dönüş yineleme ( self )


def clear ( self ):

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

Kod: Bir Redis bağlantısı ve benzersiz ad ileterek bir RedisOrderedDict örneği oluşturun

`dan redis import Redis

`dan yeniden toplamalar import RedisOrderedDict


r = Redis ()

çubuk = RedisOrderedDict (r, `test` )

rod.get ( ` bar` )

çubuk [ `bar` ] = 5.2

yazdır (çubuk [ `bar` ])


yazdır ( len (çubuk))


yazdır (çubuk.items())


çubuk. clear ()

Çıkış:

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

Kodların çoğu benzer görünebilir Her ikisi de koleksiyonları genişlettiği için beklenecek olan RedisHashMap`e ar. Ana fark, RedisOrderedSet `in anahtarları kayan nokta değerlerine göre sıralamasıdır ve bu nedenle RedisHashMap gibi anahtar değerlerin rastgele depolanması için uygun değildir.
Her bir anahtar yöntemi ve bunların Redis ile nasıl çalıştığını açıklayan çizimler:

  • __len __ (): içindeki öğe sayısını almak için zcard komutu kullanılır. sıralı bir set.
  • __getitem __ (): , bir anahtarın puanını almak için zscore komutunu kullanır ve anahtar yoksa 0 döndürür.
  • __ setitem __ (): bu komut, verilen puanla sıralı kümeye bir anahtar eklemek veya anahtar zaten varsa puanı güncellemek için zadd komutunu kullanır.
  • __delitem __ (): zrem komutu, sıralı kümeden bir anahtarı çıkarmak için kullanılır.
  • tuşlar (): zrevrange komutu, sıralı kümedeki tüm anahtarları en yüksek puana göre sıralamak için kullanılır. Sıralı anahtarların bir parçasını daha verimli bir şekilde elde etmek için, başlangıç ​​ve bitiş olmak üzere iki isteğe bağlı anahtar sözcük bağımsız değişkeni gerekir.

NLP | Sıralı bir sözlüğü Redis`te saklama __del__: Questions

NLP | Sıralı bir sözlüğü Redis`te saklama __delete__: Questions

Shop

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

$

Best laptop for Zoom

$499

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

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