O que encontrei funcionando foi armazenar a chave como um identificador exclusivo e stringificar todo o objeto enquanto armazenava os dados e aplicava JSON.parse durante a extração.
Código de exemplo:
client
.setAsync(obj.deviceId.toString(), JSON.stringify(obj))
.then((doc) => {
return client.getAsync(obj.deviceId.toString());
})
.then((doc) => {
return JSON.parse(doc);
}).catch((err) => {
return err;
});
Embora stringing e depois analisá-lo de volta é uma operação computacionalmente pesada e bloqueará o servidor Node.js se o tamanho do JSON se tornar grande. Provavelmente estou pronto para ser atingido por uma complexidade menor porque sei que meu JSON não seria enorme, mas isso precisa ser lembrado ao seguir essa abordagem.