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