NLP | Хранение упорядоченного словаря в Redis

| | | | | | |

class RedisOrderedDict (collections.MutableMapping):

def __ init__ ( self , r, name):

self ._ r = r

self ._name = encode_key (имя)

def __ iter __ ( self ):

return iter ( self . items())


def __ len __ ( self ):

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


def __ getitem __ ( self , key):

return self ._ r.zscore ( self ._name, encode_key (ключ))


def __ setitem __ ( self , ключ, оценка):

self ._r.zadd ( self ._ name, encode_key (key), score)

def __ delitem __ ( self , ключ):

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


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

# мы используем zrevrange для сортировки ключей

# по значению вместо

самый низкий

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

def значения ( self , start = 0 , end = - 1 ):

return [v for ( k, v) in self . элементы (начало = начало, конец = end)]


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

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

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

return self [key] или по умолчанию


def iteritems ( self ):

return iter ( self )


def прозрачный ( self ):

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

Код: создайте экземпляр RedisOrderedDict, передав соединение с Redis и уникальное имя

from redis import Redis

from rediscollections import RedisOrderedDict


r = Redis ()

стержень = RedisOrderedDict (r, `test` )

rod.get ( ` bar` )

стержень [ `bar` ] = 5.2

print (rod [ `bar` ])


print ( len (стержень))


print (rod.items ())


стержень. очистить ()

Выход:

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

Большая часть кода может выглядеть похожей ar в RedisHashMap, чего и следовало ожидать, поскольку оба они расширяют коллекции . Основное отличие состоит в том, что RedisOrderedSet упорядочивает ключи по значениям с плавающей запятой и поэтому не подходит для произвольного хранения значений ключей, таких как RedisHashMap .
Наброски, объясняющие каждый ключевой метод и то, как они работают с Redis:

  • __len __ (): команда zcard используется для получения количества элементов в упорядоченный набор.
  • __getitem __ (): использует команду zscore для получения оценки ключа и возвращает 0, если ключ не существует.
  • __ setitem __ (): эта команда использует команду zadd для добавления ключа в упорядоченный набор с заданной оценкой или обновления оценки, если ключ уже существует.
  • __delitem __(): Команда zrem используется для удаления ключа из упорядоченного набора.
  • keys(): Команда zrevrange используется для получения всех ключей в упорядоченном наборе, отсортированных по наивысшему баллу. Для более эффективного получения фрагмента упорядоченных ключей требуются два необязательных аргумента ключевого слова, start и 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