node ioredis node.js redis key-value-store

node.js - ioredis - redis client



Cómo almacenar una matriz de hash en redis (2)

Quiero almacenar una matriz de hash en redis, ¿cuál es la mejor manera de codificarlo?


Si está utilizando un lenguaje que admite conversión de / a json, puede convertir su hash a json y anexarlo en una lista. Puedes hacer lo siguiente en Ruby:

require ''rubygems'' require ''redis'' require ''json'' require ''pp'' redis = Redis.new(:host => ''127.0.0.1'', :port => 6379) h1 = { :k1 => ''v1'', :k2 => ''v2'' } redis.rpush(''arr'', h1.to_json) h2 = { :k3 => ''v3'', :k4 => ''v4'' } redis.rpush(''arr'', h2.to_json) hashes = redis.lrange(''arr'', 0, -1) hashes.map! { |x| JSON.parse(x) } pp hashes


La única forma en que AFAIK es desreferenciarlos. Supongamos que tiene una matriz de 2 hashes como: {foo: ''bar'', baz: ''qux''} .

Deberías guardarlos por separado y luego crear un SET que los haga referencia a todos:

HMSET myarr:0 foo bar baz qux SADD myarr myarr:0 HMSET myarr:1 foo bar baz qux SADD myarr myarr:1

Luego puede recuperarlos todos al consultar el conjunto: SMEMBERS myarr y luego llamar a HGETALL <key> en todas las claves devueltas para reconstruir su matriz original de hashes.

Espero que esto tenga sentido. Y si encuentras una forma más inteligente, me alegraría escucharla.