module TrackInRecordExtender
Public Instance Methods
del_cache(r)
click to toggle source
# File lib/extenders/track_in_record_extender.rb, line 71 def del_cache(r) # REDIS.del("tir#{r.track_id}h#{TIR_CACHE_VERSION}") $xunch["track_in_record"].evict(r.track_id) end
fetch(track_id)
click to toggle source
TIR_CACHE_VERSION = 2
# File lib/extenders/track_in_record_extender.rb, line 4 def fetch(track_id) # key = "tir#{track_id}h#{TIR_CACHE_VERSION}" # data = REDIS.get(key) # return Hessian2.parse(data, TrackInRecordStruct) if data # obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first # if obj # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj))) # REDIS.expire(key, 604800) # end # obj cache_server = $xunch["track_in_record"] data = cache_server.get(track_id) return data if data obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first if obj cache_server.put(obj) end obj end
mfetch(track_ids, ignore_nil = false)
click to toggle source
# File lib/extenders/track_in_record_extender.rb, line 27 def mfetch(track_ids, ignore_nil = false) # return [] if track_ids.empty? # datas = REDIS.mget(track_ids.map{|track_id| "tir#{track_id}h#{TIR_CACHE_VERSION}" }) # objs = [] # datas.each_with_index do |data, i| # if data # objs << Hessian2.parse(data, TrackInRecordStruct) # else # track_id = track_ids[i] # obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first # objs << obj # if obj # key = "tir#{track_id}h#{TIR_CACHE_VERSION}" # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj))) # REDIS.expire(key, 604800) # end # end # end # objs.delete(nil) if ignore_nil # objs return [] if track_ids.empty? cache_server = $xunch["track_in_record"] datas = cache_server.multi_get(track_ids.clone) objs = [] datas.each_with_index do |data, i| if data objs << data else track_id = track_ids[i] obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first objs << obj if obj cache_server.put(obj) end end end objs.delete(nil) if ignore_nil objs end