Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie soll ich ein Array in Redis speichern?

Wenn Ihr Objekt flach ist, können Sie Hash für jedes Element und eine Liste für das Array verwenden

Verwenden eines Listenschlüssels für den Namen des Artikelschlüssels itemlist Verwenden von Hash zum Speichern tatsächlicher Daten in Schlüsseln wie item:1

const data = [
    {
        id: 1,
        nombre: 'cualquier',
        descripcion: 'descripción muy especifica',
        monto: '100000',
        fecha: '2019-10-16',
        estado: true
    },
    {
        id: 2,
        nombre: 'conjunto autosustentable',
        descripcion:
            'es un proyecto creado para favorecer al medio ambiente y reducir costos de estilo de vida',
        monto: '15000',
        fecha: '2019-12-16',
        estado: true
    },
    {
        id: 3,
        nombre: 'cultivo autosustentable',
        descripcion:
            'el objetivo es reducir el costo de producción de alimento y favorecer el medio ambiente',
        monto: '190000000',
        fecha: '2019-12-16',
        estado: true
    }
]

// using ioredis lib in this example
// saving it to redis

for (let i = 0; i < data.length; i++) {
    const item = data[i]
    await redis.hmset('item:${item.id}', item)
    await redis.lpush('itemlist', `item:${item.id}`)
}

// getting it back from redis: first geet the keys ; then get all the data
const keys = await redis.lrange('itemlist', 0, -1) // 0, -1 => all items

const p = redis.pipeline()
for (let i = 0; i < keys.length; i++) {
    const key = keys[i];
    p.hgetall(key)
}
const resp = await p.exec()