Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

147
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda