转载自:https://www.vicw.com/groups/code_monkey/topics/137
保存哈希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'))