Ya tienes la respuesta a tu primera pregunta: la intención ADD
es solo funcionar cuando una clave aún no existe, mientras SET
está allí para actualizar el valor, independientemente de si ya existe. Si está familiarizado con SQL, es (aproximadamente) como la diferencia entre INSERT
consultas ( ADD
) y UPDATE
( SET
).
En lo que respecta a su pregunta de adición, usaría la que mejor se adapte a su propósito. Yo diría que esa SET
sería la operación más común, porque es más común que solo quieras decir "Quiero que la clave foo
tenga el valor bar
, y no me importa si ya estaba allí o no". Sin embargo, habría ocasiones (menos frecuentes) en las que sería necesario saber que una clave ya no está en el caché.
Un ejemplo que viene a la mente cuando ADD
sería apropiado es almacenar sesiones en Memcache (que, por cierto, no lo recomiendo): si está generando sus ID de sesión al azar (o mediante hash), no querrá para crear una nueva sesión con la misma clave que una existente, ya que esto otorgaría a un usuario acceso a los datos de otro usuario. En este caso, cuando creó la sesión que usaría ADD
, y si devuelve un estado de falla, necesitaría generar una nueva ID de sesión e intentar nuevamente. La actualización de la sesión, por supuesto, se usaría a SET
medida que el usuario trabajara en su aplicación.