module TrackSetExtender
Public Instance Methods
del_cache(r)
click to toggle source
# File lib/extenders/track_set_extender.rb, line 74 def del_cache(r) # REDIS.del("set#{r.id}h#{TRACKSET_CACHE_VERSION}") $xunch["track_set"].evict(r.id) end
fetch(id)
click to toggle source
TRACKSET_CACHE_VERSION = 3
# File lib/extenders/track_set_extender.rb, line 4 def fetch(id) # key = "set#{id}h#{TRACKSET_CACHE_VERSION}" # data = REDIS.get(key) # return Hessian2.parse(data, TrackSetStruct) if data # obj = TrackSet.shard(id).where(id: id).first # if obj # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj))) # REDIS.expire(key, 604800) # end # obj cache_server = $xunch["track_set"] data = cache_server.get(id) return data if data obj = self.shard(id).where(id: id).first if obj cache_server.put(obj) end obj end
mfetch(ids, ignore_nil = false)
click to toggle source
# File lib/extenders/track_set_extender.rb, line 28 def mfetch(ids, ignore_nil = false) # return [] if ids.empty? # datas = REDIS.mget(ids.map{|id| "set#{id}h#{TRACKSET_CACHE_VERSION}" }) # objs = [] # datas.each_with_index do |data, i| # if data # objs << Hessian2.parse(data, TrackSetStruct) # else # id = ids[i] # obj = TrackSet.shard(id).where(id: id).first # objs << obj # if obj # key = "set#{id}h#{TRACKSET_CACHE_VERSION}" # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj))) # REDIS.expire(key, 604800) # end # end # end # objs.delete(nil) if ignore_nil # objs return [] if ids.empty? cache_server = $xunch["track_set"] datas = cache_server.multi_get(ids) objs = [] datas.each_with_index do |data, i| if data objs << data else id = ids[i] obj = self.shard(id).where(id: id).first objs << obj if obj cache_server.put(obj) end end end objs.delete(nil) if ignore_nil objs end