Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

148
Vistas
Redis - ¿Cómo encontrar valores con SREM?

Quiero actualizar mi SET. Vi que no es posible, pero puedo hacer SREM y SADD nuevamente.

El problema es que no puedo encontrar el valor anterior con SREM. mis datos son:

 {"owner_id":30902468,"qu1":{"q1":"test","a1":"test"},"qu2":{"q2":"test","a2":"test"},"qu3":{"q3":"test","a3":"test"},"created_at":1648925484846,"score":1,"ip":"NA"}

Puedo obtener esto con own_id, así que await redis.srem("qa", backtick{"owner_id":${owner_id}*backtick); Sin embargo, no funciona.

Aquí está mi código completo:

 import Redis from "ioredis"; export default async function create(req, res) { const redis = new Redis(process.env.U_REDIS_URL); const { q1, a1, q2, a2, q3, a3, owner_id } = req.body; if (!q1 && !a1) { res.status(400).json({ error: "Type at least one question", }); } else if (q1.length < 150) { const newEntry = { owner_id, qu1: { q1, a1 }, qu2: { q2, a2 }, qu3: { q3, a3 }, created_at: Date.now(), score: 1, ip: "NA", }; await redis.srem("qa", `{"owner_id":${owner_id}*`); // THIS IS NOT WORKING - DONT KNOW HOW TO GET OLD VALUE await redis.sadd("qa", JSON.stringify(newEntry)); res.status(200).json({ body: "success", }); } else { res.status(400).json({ error: "Max 150 characters please.", }); } await redis.quit(); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El comando SREM no puede tener comodines. Esto simplemente no funcionará. Para eliminar un elemento de un conjunto, debe proporcionar el miembro completo. Así por ejemplo:

 > SADD foo apple > SADD foo alpine > SADD foo alpha

Para reemplazar apple con banana no puede ingresar SREM foo ap* y luego SADD foo banana . Tienes que coincidir con todo el miembro:

 > SREM foo apple > SADD foo banana

Según su ejemplo, creo que una mejor solución sería almacenar su cadena JSON en una Cadena (o tal vez RedisJSON si esa es una opción) con una clave de qa:30902468 y luego simplemente almacenar las ID de propietario en el Conjunto.

 > SET qa:30902468 '{"owner_id":30902468,"qu1":{"q1":"test","a1":"test"},"qu2":{"q2":"test","a2":"test"},"qu3":{"q3":"test","a3":"test"},"created_at":1648925484846,"score":1,"ip":"NA"}' > SADD qa 30902468

Luego, cuando necesite cambiar la cadena, simplemente cambie la Cadena:

 > SET qa:30902468 '{ "some": "other", "JSON": true }'

Y cuando necesite leer todas las cosas en el Conjunto, solo solicite al Conjunto las ID:

 > SMEMBERS qa 1) "30902468" 2) "30902469" 3) "30902470"

Y luego consulte las cadenas en función de las ID devueltas:

 > GET qa:30902468 > GET qa:30902469 > GET qa:30902470

Lo que básicamente está haciendo aquí es administrar su propio índice usando Conjuntos en Redis.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda