我正在使用redis-py處理到Redis存儲(chǔ)中的批量插入。
我寫了以下非常簡(jiǎn)單的方法:
import redis
def push_metadata_to_redis(list_of_nested_dictionaries):
redis_client = redis.Redis(host='localhost', port=6379, db=0)
redis_pipeline = redis_client.pipeline(transaction=False)
for dictionary in list_of_nested_dictionaries:
for k, inner_dict in dictionary.items()
redis_pipeline.hset(k, mapping=inner_dict)
result = redis_pipeline.execute(raise_on_error=True)
print(result)
Basically it:
- 輸入數(shù)千本字典的列表
- 對(duì)于每個(gè)字典,將Redis中的每個(gè)鍵/值項(xiàng)(值也是字典,這就是我使用
hset
的原因)
每個(gè)dictionary
包含~10k個(gè)元素,因此redis_pipeline.execute(raise_on_error=True)
每~10khset
發(fā)生一次。
我注意到幾分鐘后,result
值從0
的數(shù)組逐步變?yōu)?code>4的數(shù)組,這讓我很擔(dān)心。
一方面,我希望任何錯(cuò)誤都應(yīng)該作為異常(raise_on_error=True
)提出,但另一方面,我在文檔中找不到任何關(guān)于這種行為的參考,我不明白這意味著什么。
因此,我的問題是:
result
等于4
的數(shù)組是否意味著redis_pipeline.execute(raise_on_error=True)
操作出錯(cuò)?- 如果是,我如何理解出了什么問題?
- 如果沒有,那是什么意思?
提前謝謝。
因此,當(dāng)使用HSET命令時(shí),返回值是添加的字段數(shù)
因此,緩存中可能已經(jīng)存在那些具有0的條目,并且沒有添加新字段。