tutorial commands aws redis

commands - redis vs mongodb



Comprobando si existe un valor en una lista ya Redis (3)

Me pregunto si hay una forma de comprobar si una clave ya existe en una lista redis.

No puedo usar un conjunto porque no quiero aplicar la exclusividad, pero sí quiero poder verificar si la cadena está realmente allí.

Gracias.


No, no hay forma de verificar si una lista redis contiene un valor dado. Vea los comandos de la lista Redis para referencia.

Supongo que podría usar LREM para (intentar) eliminar el valor y verificar el valor de retorno para ver si se eliminó. Pero entonces tendrías que volver a ponerlo, y parece dudoso. Probablemente haya una solución mejor para su problema: ¿qué está tratando de lograr?


Sus opciones son las siguientes:

  1. Usando LREM y reemplazándolo si fue encontrado.
  2. Mantener un SET separado junto con su LIST
  3. Recorra la LIST hasta encontrar el elemento o llegar al final.

Las listas de Redis se implementan como una http://en.wikipedia.org/wiki/Linked_list , de ahí las limitaciones.

Creo que tu mejor opción es mantener un SET duplicado. Esto es lo que tiendo a hacer. Solo piense en ello como un índice adicional. De todos modos, asegúrese de que sus acciones sean atómicas con los guiones MULTI - EXEC o Lua.


Las listas permiten duplicados, pero no proporcionan una forma simple de verificar la existencia y, como lo advirtió @Fritzy, usted necesita:

  • Hacer operaciones múltiples (eliminar y luego agregar de nuevo se encuentra) para verificaciones simples = Costo en el tiempo
  • Mantener un conjunto separado = Costo en la memoria

Me sorprende que nadie te sugiriera usar una tabla hash o un conjunto ordenado que combinen las ventajas de permitir la duplicidad (almacenando el número de elementos como valor - tabla Hash , o puntaje - conjunto ordenado ) e indexando miembros por naturaleza de un hash mesa puesta.

Tabla de picadillo

Para verificar la existencia de una clave, use el comando HGET . Devuelve una respuesta nil si el miembro especificado no existe.

Para agregar un nuevo miembro, simplemente use HINCRBY que actualizará el valor (es decir, la cantidad de elementos con el nombre del miembro) o creará un nuevo miembro si no existe.

Conjunto ordenado

Para verificar la existencia de una clave, use cualquiera de los tres comandos siguientes:

  • ZSCORE
  • ZRANK
  • ZREVRANK

nil una respuesta nil si el miembro especificado no existe.

Para agregar un nuevo miembro, simplemente use ZINCRBY que actualizará el puntaje (es decir, la cantidad de elementos con el nombre del miembro) o creará un nuevo miembro si no existe.

En resumen: los conjuntos ordenados o las tablas hash le permiten realizar todas las operaciones con sus requisitos con un solo comando .