¿Cómo puedo actualizar (reemplazar) la operación en Redis? (como canalizado)

Upsert (Reemplazar)

  • Actualizar si existe
  • Insertar si no existe

(Uso de la clave principal como canalización)

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

¿Qué quieres decir con "actualizar si existe"? Los comandos SET estándar de Redis (SET, MSET, HSET, LSET, etc.) actualizará (sobrescribirá) una clave existente si la clave ya existe o insertará una nueva clave si la clave aún no existe.

Parece que estás preguntando por el comportamiento predeterminado.

contestado el 13 de mayo de 11 a las 01:05

¿Qué pasa si quiero un upsert condicional? lo que significa que si la clave no está allí, insértela y, si no, compare la marca de tiempo existente con la nueva y actualice solo si es nueva. quiero hacer esto sin usar el script lua - user1870400

Las claves de Redis no tienen marcas de tiempo, excepto quizás los tiempos de vencimiento. Si está configurando marcas de tiempo de vencimiento en las claves, es bastante fácil de usar setnx u otros comandos que incluyen nx (que básicamente significa "no si existe"). Luego, cuando se eliminen las claves que caducan, se realizarán las inserciones, pero no antes. --- También puede usar dos claves: una con el valor y otra con la marca de tiempo y recuperar esa marca de tiempo antes de actualizar la clave de valor. Se puede hacer con Lua o WATCH + EXEC si necesita que esto sea atómico. --- Esta pregunta podría ser propia en stackoverflow. - Carl Zulauf

hay otras estructuras de datos compatibles con redis, por ejemplo, SET, Sorted SET y el comando SET funciona para valores de cadena solo cuando espera una clave de cadena y un valor de cadena.

Respondido 12 Abr '14, 21:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.