Module: RedBlocks::Operations

Defined in:
lib/red_blocks/operations.rb

Overview

Operations for development. Please be careful with using in prduction.

Class Method Summary collapse

Class Method Details

.delete(set_or_pattern) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/red_blocks/operations.rb', line 4

def self.delete(set_or_pattern)
  keys = self.keys(set_or_pattern)
  RedBlocks.client.pipelined do
    keys.each do |key|
      RedBlocks.client.del(key)
    end
  end
end

.delete_intermediate(set, threshold: RedBlocks::CachePolicy.none) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/red_blocks/operations.rb', line 24

def self.delete_intermediate(set, threshold: RedBlocks::CachePolicy.none)
  case set
  when RedBlocks::ComposedSet
    if set.cache_time <= threshold
      RedBlocks.client.del(set.key)
    end

    set.sets.each do |internal_set|
      delete_intermediate(internal_set, threshold: threshold)
    end
  when RedBlocks::Set
    if set.cache_time <= threshold
      RedBlocks.client.del(set.key)
    end
  else
    raise TypeError.new("Expect RedBlocks::Set, but got #{set.class.name}")
  end
end

.keys(set_or_pattern) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/red_blocks/operations.rb', line 13

def self.keys(set_or_pattern)
  if set_or_pattern.is_a?(Class) && set_or_pattern <= RedBlocks::Set
    pattern = set_or_pattern.key_pattern
  elsif set_or_pattern.is_a?(String)
    pattern = set_or_pattern
  else
    raise ArgumentError.new("Unexpected pattern(#{set_or_pattern.inspect})")
  end
  scan_keys(pattern)
end