自然語言處理 |在 Redis 中存儲已排序的字典

| | | | | | |

class RedisOrderedDict (collections.MutableMapping):

def __ init__ ( self , r, name):

self._r= r

self ._name = encode_key (name)

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(key))


def __ setitem __ ( self , key, score):

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

def __ delitem __ ( self , key):

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


def 鍵( self ,開始 = 0 , end = - 1 ):

# 我們使用 zrevrange 對鍵進行排序

# 按值而不是

最低

返回 self ._ r.zrevrange ( self ._ name, start, end)

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

return [v for ( k, v) in self 。項目 (開始 = start, end = end)]


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

返回 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 clear ( self ):

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

代碼:通過傳遞 Redis 連接和唯一名稱創建 RedisOrderedDict 實例

from redis import Redis 代碼>

from rediscollections import RedisOrderedDict


r = Redis()

= RedisOrderedDict (r, `test` )

rod.get( `bar` )

棒[ `bar` ] = 5.2

print (rod [ `bar` ])


print ( len (rod))


print (rod.items ())


rod. clear()

退出:

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

大部分代碼可能看起來很相似ar 到 RedisHashMap,這是可以預料的,因為它們都擴展了 collections 。主要區別在於RedisOrderedSet 按浮點值對key進行排序,因此不適合RedisHashMap等key值的任意存儲。
解釋每個關鍵方法以及它們如何與 Redis 一起使用的草圖:

  • __len __ (): zcard 命令用於獲取其中的項目數有序集。
  • __getitem __ (): 使用 zscore 命令獲取某個鍵的分數,如果該鍵不存在則返回 0。
  • __ setitem __ (): 此命令使用 zadd 命令將一個鍵添加到具有給定分數的有序集中,或者如果該鍵已經存在,則更新分數。
  • __delitem __(): zrem 命令用於從有序集中移除一個鍵。
  • keys(): zrevrange 命令用於獲取有序集合中的所有鍵,按最高分排序。為了更有效地獲取有序鍵的片段,需要兩個可選的關鍵字參數,開始和結束。

自然語言處理 |在 Redis 中存儲已排序的字典 __del__: Questions

自然語言處理 |在 Redis 中存儲已排序的字典 __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

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