คุณได้รับคำตอบสำหรับคำถามแรกของคุณแล้ว: เจตนาของADD
การทำงานเฉพาะเมื่อไม่มีคีย์อยู่ในขณะSET
นั้นเพื่ออัพเดตค่าโดยไม่คำนึงว่ามีอยู่จริงหรือไม่ ถ้าคุณคุ้นเคยกับ SQL มันก็เหมือนกับความแตกต่างระหว่างINSERT
ข้อความค้นหา ( ADD
) และUPDATE
( SET
)
ในส่วนที่เกี่ยวกับคำถามเพิ่มเติมของคุณคุณจะใช้แบบใดก็ตามที่เหมาะสมกับวัตถุประสงค์ของคุณ ฉันจะบอกว่าSET
มันเป็นการดำเนินการทั่วไปมากขึ้นเพราะมันเป็นเรื่องธรรมดามากกว่าที่คุณเพียงแค่ต้องการพูดว่า "ฉันต้องการกุญแจfoo
เพื่อให้มีค่าbar
และฉันไม่สนใจว่ามันจะอยู่ในนั้นหรือไม่" อย่างไรก็ตามจะมีโอกาส (บ่อยครั้ง) เมื่อจำเป็นต้องทราบว่ารหัสไม่ได้อยู่ในแคชแล้ว
ตัวอย่างที่ควรคำนึงถึงเมื่อADD
เหมาะสมคือการจัดเก็บเซสชันใน memcache (ซึ่งฉันไม่แนะนำ) ซึ่งหากคุณกำลังสร้าง ID เซสชันของคุณแบบสุ่ม (หรือผ่านการแฮช) คุณไม่ต้องการ เพื่อสร้างเซสชันใหม่ด้วยคีย์เดียวกับที่มีอยู่ซึ่งจะทำให้ผู้ใช้รายหนึ่งสามารถเข้าถึงข้อมูลของผู้ใช้รายอื่นได้ ในกรณีนี้เมื่อคุณสร้างเซสชั่นที่คุณจะใช้ADD
และหากมันกลับสถานะความล้มเหลวคุณจะต้องสร้าง ID เซสชั่นใหม่และลองอีกครั้ง แน่นอนว่าการอัปเดตเซสชันจะใช้SET
เมื่อผู้ใช้ทำงานผ่านแอปพลิเคชันของคุณ