module RedisPage::Sweeper
Public Class Methods
sweep(info, queue)
click to toggle source
# File lib/redis_page/sweeper.rb, line 58 def self.sweep(info, queue) Rails.logger.info "[page cache]add sweeper job: #{info['url']}-#{info['country']}" Sidekiq::Client.push('queue' => queue, 'class' => SweeperWorker, 'args' => [info['url'], info['country']]) end
Public Instance Methods
add_clazz_infos(urls)
click to toggle source
# File lib/redis_page/sweeper.rb, line 42 def add_clazz_infos(urls) key = "c:#{self.class.table_name}" Rails.logger.info "[page cache]invalidate: #{key}" RedisPage.cache_relation_redis.smembers(key).each do |info| RedisPage.cache_relation_redis.srem(key, info) add_infos(urls, info) end end
add_infos(urls, info)
click to toggle source
# File lib/redis_page/sweeper.rb, line 36 def add_infos(urls, info) info = JSON.parse(info) key = "#{info['url']}-#{info['country']}" urls[key] = info unless urls[key] end
fetch_infos(urls)
click to toggle source
# File lib/redis_page/sweeper.rb, line 51 def fetch_infos(urls) urls.values.each do |info| RedisPage::Sweeper.sweep(info, redis_page_queue_name) end end
invalidate_clazz_cache()
click to toggle source
# File lib/redis_page/sweeper.rb, line 24 def invalidate_clazz_cache urls = {} add_clazz_infos(urls) fetch_infos(urls) end
invalidate_instance_cache()
click to toggle source
# File lib/redis_page/sweeper.rb, line 12 def invalidate_instance_cache urls = {} key = "i:#{self.class.table_name}:#{self.id}" Rails.logger.info "[page cache]invalidate: #{key}" RedisPage.cache_relation_redis.smembers(key).each do |info| RedisPage.cache_relation_redis.srem(key, info) add_infos(urls, info) end add_clazz_infos(urls) fetch_infos(urls) end
redis_page_queue_name()
click to toggle source
通过覆写此方法, 达到可以指定redis_page queue的目的
# File lib/redis_page/sweeper.rb, line 31 def redis_page_queue_name 'redis_page' end