복붙노트

[REDIS] 레일 응용 프로그램에 레디 스에 해시를 저장

REDIS

레일 응용 프로그램에 레디 스에 해시를 저장

임 그냥이 어쩌면 바보 같은 질문 있도록 레일 레디 스로 떨어져 시작.

나는 레디 스 서버에 해시를 저장하려고 만하고 나는 그것의 단지 문자열 IE 그것을 검색 할 때.

hash = {"field" => "value", "field2" => "value2"}
$redis.set('data', hash)

#So collecting the data
@data = $redis.get('data')

그 문자열로 반환 이것은 분명히 잘못된 것입니다.

나는 또한 어떤 결과를 반복하고 hset 예를 사용하여 시도했다.

@data.each do |d|
  $redis.hset('data', d.field, d.value)
end

# errror
# ERR Operation against a key holding the wrong kind of value

갈 곳 확실하지. 나는이 문제되지 않았 음을 확인하는 열쇠 $의 redis.del ( '데이터')을 삭제했습니다.

당신은, 리 조언을 할 수 있기를 바랍니다

해결법

  1. ==============================

    1.나는 레디 스의 문서가 더 철저 읽을 수 있어야합니다.

    나는 레디 스의 문서가 더 철저 읽을 수 있어야합니다.

    대답:

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

    2.레디 스 보석이처럼 해시를 매핑합니다 :

    레디 스 보석이처럼 해시를 매핑합니다 :

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

    3.위해 레디 스의 해시를 저장합니다. 당신은 첫 번째 매개 변수로 키를 통과해야하고 다음 매개 변수를 hmset 방법에 키와 값이어야합니다.

    위해 레디 스의 해시를 저장합니다. 당신은 첫 번째 매개 변수로 키를 통과해야하고 다음 매개 변수를 hmset 방법에 키와 값이어야합니다.

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

    해피 코딩.

  4. ==============================

    4.당신은 당신이 실제로 당신이 해시 변수를 사용하더라도 일반 레디 스 문자열을 저장 $ redis.set ( '데이터', 해시)를 사용하면 (그것은 JSON 문자열로 직렬화 할 수 있습니다,하지만 난 그것에 대해 확실 정말 아니에요).

    당신은 당신이 실제로 당신이 해시 변수를 사용하더라도 일반 레디 스 문자열을 저장 $ redis.set ( '데이터', 해시)를 사용하면 (그것은 JSON 문자열로 직렬화 할 수 있습니다,하지만 난 그것에 대해 확실 정말 아니에요).

    (하지 당신이 그랬던 것처럼 필드를 통해 반복에 의해) $ redis.hset ( '데이터', 해시)를 사용해보십시오.

    또 다른 점 : 당신은 확실히 당신은 완전히 이전 키를 삭제 한 있습니까? 당신은 이전 문자열 키 "가에서"아직 옵션을 제거하기 위해 완전히 다른 키를 hset하려고 했습니까?

  5. from https://stackoverflow.com/questions/9832124/saving-a-hash-to-redis-on-a-rails-app by cc-by-sa and MIT license