आपको अपने पहले प्रश्न का उत्तर बहुत पहले से ही मिल गया है: का इरादा ADDकेवल तब काम करना है जब कोई कुंजी पहले से मौजूद नहीं है, जबकि SETमूल्य को अपडेट करने के लिए है, चाहे वह पहले से मौजूद हो। यदि आप SQL से परिचित हैं, तो यह INSERTप्रश्नों ( ADD) और UPDATE( SET) के बीच अंतर की तरह है ।
आपके परिशिष्ट के प्रश्न के संबंध में, आप अपने उद्देश्य के अनुसार जो भी उपयोग करेंगे। मैं कहूंगा कि SETयह अधिक सामान्य ऑपरेशन होगा, क्योंकि यह अधिक सामान्य है कि आप केवल यह कहना चाहते हैं "मुझे fooमूल्य की कुंजी चाहिए bar, और मुझे परवाह नहीं है कि यह पहले से ही था या नहीं"। हालांकि, ऐसे (कम लगातार) अवसर होंगे जब यह जानना आवश्यक होगा कि एक कुंजी कैश में पहले से ही नहीं है।
एक उदाहरण जो मन में आता है जब ADDउचित होगा मेम्चेचे में सत्रों का भंडारण किया जाता है (जो, वैसे, मैं अनुशंसा नहीं करता हूं) - यदि आप अपने सत्र आईडी को यादृच्छिक रूप से (या हैशिंग के माध्यम से) उत्पन्न कर रहे हैं, तो आप नहीं चाहेंगे एक मौजूदा कुंजी के साथ एक नया सत्र बनाने के लिए, क्योंकि यह एक उपयोगकर्ता को दूसरे उपयोगकर्ता के डेटा तक पहुंच प्रदान करेगा। इस स्थिति में, जब आप सत्र का उपयोग करेंगे ADD, और यदि यह विफलता की स्थिति लौटाता है, तो आपको एक नया सत्र आईडी बनाने और फिर से प्रयास करने की आवश्यकता होगी। सत्र को अद्यतन करना, निश्चित रूप से, तब उपयोग होगा जब SETउपयोगकर्ता ने आपके आवेदन के माध्यम से अपना काम किया।