query pattern keys all ruby-on-rails-3 redis

ruby-on-rails-3 - pattern - redis search key



Guardando un HASH para Redis en una aplicaciĆ³n de rieles (4)

Estoy empezando con Redis con Rails, así que esta puede ser una pregunta tonta.

Estoy intentando guardar un hash en el servidor redis, pero cuando lo recupero es solo una cadena de IE.

hash = {"field" => "value", "field2" => "value2"} $redis.set(''data'', hash) #So collecting the data @data = $redis.get(''data'')

Esto obviamente es incorrecto ya que vuelve como una cadena.

También he intentado en bucle algunos resultados y utilizando el hset es decir.

@data.each do |d| $redis.hset(''data'', d.field, d.value) end # errror # ERR Operation against a key holding the wrong kind of value

No estoy seguro de a dónde ir. He borrado la clave $ redis.del (''data'') para asegurarme de que no haya sido el problema.

Espero que puedas aconsejar, Lee


Cuando usa $redis.set(''data'', hash) , en realidad está guardando una cadena Redis normal, aunque use una variable de hash (puede estar serializada en la cadena Json, pero realmente no estoy seguro).

Intente usar $redis.hset(''data'', hash) (no haciendo un bucle a través de los campos como lo hizo).

Otro punto: ¿Está seguro de haber eliminado la clave anterior por completo? ¿ hset una clave completamente diferente para eliminar la opción de que la clave de cadena anterior todavía esté "ahí fuera"?


Debería haber leído los documentos de redis más a fondo.

Responder:

IN $redis.set ''data'', hash.to_json OUT data = JSON.parse($redis.get("data"))


La gema redis remapea tu hash de esta manera:

$redis.mapped_hmset "test", { foo: "bar" } $redis.hgetall "test" => {"foo"=>"bar"}


Para guardar un hash en redis. Debe pasar la clave como primer parámetro y luego los siguientes parámetros deben ser las claves y los valores en el método hmset .

$redis.hmset(''user:007'', :name, ''Antonio'', :busy, ''maybe'', :ping, ''pong'')

Feliz codificacion