保存哈希hash 数组 Array 格式化哈希

$redis = Redis.new

1.哈希存储

key   = 'hash1'
value = { a: '1', b: '2' }
# 直接存哈希
$redis.mapped_hmset(key, value)

# 取值
$redis.hgetall("hash1")
#=> {"a"=>"1", "b"=>"2"}

根据键存储哈希

根据reids key 和hash 的键存值
$redis.hset("hash2", "field1", "123456")

# 取值
$redis.hgetall("hash2")
#=> {"field1"=>"123456"} 

# 根据reids key 和hash 的键取值
$redis.hget("hash2", 'field1')
#=> "123456" 

# 删除key为:"hash2" 和hash key为:'field1'的键值对
$redis.hdel("hash2", 'field1')

 using transform_keys or deep_symbolize_keys you can turn those de-symbolized keys back into symbolized

# 将hash的键转化为symbol格式
hash = { 'person' => { 'name' => 'Rob', 'age' => '28' } }
hash.deep_symbolize_keys
# => {:person=>{:name=>"Rob", :age=>"28"}}
# 将hash的键转化为string格式
h = { a: 1, b: 2, c: 3 }
h.transform_keys {|k| k.to_s }  
#=> { "a" => 1, "b" => 2, "c" => 3 }
h.transform_keys(&:to_s)        
#=> { "a" => 1, "b" => 2, "c" => 3 }
h.transform_keys.with_index {|k, i| "#{k}.#{i}" }
#=> { "a.0" => 1, "b.1" => 2, "c.2" => 3 }
# 清空redis所有数据
$redis.flushall

保存数组

# 直接存数组
$redis.sadd('arr1', [1, 2])

# 取值
$redis.smembers('arr1')
=> ["1", "2"] 

删除元素
$redis.srem('arr1', 1)
 => true 
$redis.smembers('arr1')
 => ["2"] 

对于复杂的hash和数组,可以如下处理

value = { a: [1, 2], b: [4, 5, 6] }
$redis.set('key1', value.to_json)
# 取值
$JSON.parse(redis.get('key1'))
1条评论 顺序楼层
请先登录再回复