Anda sudah cukup banyak mendapatkan jawaban atas pertanyaan pertama Anda: maksudnya ADDadalah untuk hanya bekerja ketika kunci belum ada, sementara SETada untuk memperbarui nilai, terlepas dari apakah sudah ada. Jika Anda terbiasa dengan SQL, itu (kira-kira) seperti perbedaan antara INSERTkueri ( ADD) dan UPDATE( SET).
Sehubungan dengan pertanyaan tambahan Anda, Anda akan menggunakan mana yang sesuai dengan tujuan Anda. Saya akan mengatakan itu SETakan menjadi operasi yang lebih umum, karena itu lebih umum bahwa Anda hanya ingin mengatakan "Saya ingin kunci foomemiliki nilai bar, dan saya tidak peduli apakah sudah ada di sana atau belum". Namun, akan ada (lebih jarang) kesempatan ketika perlu mengetahui bahwa kunci belum ada dalam cache.
Contoh yang muncul dalam pikiran kapan yang ADDtepat adalah menyimpan sesi dalam memcache (yang, saya tidak sarankan) - jika Anda membuat ID sesi Anda secara acak (atau melalui hashing), Anda tidak akan mau untuk membuat sesi baru dengan kunci yang sama dengan yang sudah ada, karena ini akan memberikan satu pengguna akses ke data pengguna lain. Dalam hal ini, ketika Anda membuat sesi yang akan Anda gunakan ADD, dan jika itu mengembalikan status kegagalan Anda perlu membuat ID sesi baru dan coba lagi. Memperbarui sesi, tentu saja, akan digunakan SETsaat pengguna mengerjakan aplikasi Anda.