मैं वर्तमान में अपने रेडिस टेबल में लगभग 50k हैश स्टोर करता हूं, प्रत्येक में 5 कुंजी/मूल्य जोड़े होते हैं। एक दिन में मैं एक बैच नौकरी चलाता हूं जो हैश मान अपडेट करता है, जिसमें हैश में अन्य कुंजी के मान पर कुछ महत्वपूर्ण मान सेट करना शामिल है।रेडिस: सभी हैश मान प्राप्त करने का सबसे अच्छा तरीका
यहाँ मेरी अजगर कोड है जो कुंजी और सेट के माध्यम से दोहराता है, तो new_code मूल्य एक दे हैश के लिए मौजूद है new_code को old_code है:
pipe = r.pipeline()
for availability in availabilities:
pipe.hget(availability["EventId"], "new_code")
for availability, old_code in zip(availabilities, pipe.execute()):
if old_code:
availability["old_code"] = old_code.decode("utf-8")
for availability in availabilities:
if "old_code" in availability:
pipe.hset(
availability["EventId"], "old_code", availability["old_code"])
pipe.hset(availability["EventId"], "new_code", availability["MsgCode"])
pipe.execute()
यह थोड़ा मुझे अजीब मैं दो बार कुंजी के माध्यम से पुनरावृति करने के लिए प्राप्त करने के लिए है कि है वही परिणाम, क्या ऐसा करने का एक बेहतर तरीका है?
एक और चीज जिसे मैं समझने की कोशिश कर रहा हूं वह है कि सर्वोत्तम प्रदर्शन के साथ सभी हैश मान कैसे प्राप्त करें।
d = []
pipe = r.pipeline()
keys = r.keys('*')
for key in keys:
pipe.hgetall(key)
for val, key in zip(pipe.execute(), keys):
e = {"event_id": key}
e.update(val)
if "old_key" not in e:
e["old_key"] = None
d.append(e)
तो बुनियादी तौर पर मैं keys *
तो सभी चाबियाँ भर में HGETALL
साथ पुनरावृति मूल्यों को प्राप्त करने के लिए करते हैं: यहाँ कैसे मैं वर्तमान में यह करना है। यह बहुत धीमा है, विशेष रूप से पुनरावृत्ति। क्या ऐसा करने का कोई तेज तरीका है?
क्या आप किसी भी प्रोग्रामिंग भाषा का उपयोग किए बिना सवाल के पहले भाग पर थोड़ा और बता सकते हैं। – Malinga
http://stackoverflow.com/questions/38065714/is-there-a-command-in-redis-for-hash-data-structure-similar-to-mget/38066688#38066688 हर हैश के लिए मेरा उत्तर यहाँ – Malinga
जाँच/पंक्ति मैं वर्तमान कोड लाता हूं और इसे new_code के रूप में संग्रहीत करता हूं, जबकि मौजूदा new_code को old_code के रूप में सहेजता है (पिछले राज्य को रिकॉर्ड करने के लिए और पुराने डेटाोड की तुलना में पुराने_code और new_code की तुलना करें)। –