Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como devo armazenar um array no redis?


se o seu objeto for superficial, você pode usar hash para cada item e uma lista para o array

usando uma chave de lista para o nome das chaves de item itemlist usando hash para armazenar dados reais em chaves como 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()