class_docstr: A class that is responsible for caching objects in-memory.
  
  This class is to intended to be used in the following pattern:
  
  def get(key, default=None):
      if not cache.has(key):
          try:
              data = load_data(key)
              cache.set(key, data)
          except NoSuchKeyException:
              cache.blank(key)
  
      return cache.get(key, default)
class_docstr_tok: ["A","class","that","is","responsible","for","caching","objects","in-memory",".","This","class","is","to","intended","to","be","used","in","the","following","pattern",":","def","get","(","key",",","default=None",")",":","if","not","cache.has","(","key",")",":","try",":","data","=","load_data","(","key",")","cache.set","(","key",",","data",")","except","NoSuchKeyException",":","cache.blank","(","key",")","return","cache.get","(","key",",","default",")"]
docstr: When loading a key that is discovered to be blank, instead of setting a 'None' value into
  the cache, we set nothing into the cache and mark the TTL anyway.
  
  This allows get() to properly return default values, and prevents us from doing redundant
  queries on keys that are known to be nonexistent.
  
  Params:
      key (str)
      ttl_minutes (int)
docstr_tok: ["When","loading","a","key","that","is","discovered","to","be","blank",",","instead","of","setting","a","'None","'","value","into","the","cache",",","we","set","nothing","into","the","cache","and","mark","the","TTL","anyway",".","This","allows","get","(",")","to","properly","return","default","values",",","and","prevents","us","from","doing","redundant","queries","on","keys","that","are","known","to","be","nonexistent",".","Params",":","key","(","str",")","ttl_minutes","(","int",")"]
code: def set_blank(self, key, ttl_minutes):
      """
      When loading a key that is discovered to be blank, instead of setting a 'None' value into
      the cache, we set nothing into the cache and mark the TTL anyway.
  
      This allows get() to properly return default values, and prevents us from doing redundant
      queries on keys that are known to be nonexistent.
  
      Params:
          key (str)
          ttl_minutes (int)
      """
      if key in self._data:
          del self._data[key]
      self._ttls[key] = self._clock.utcnow() + timedelta(
          minutes=ttl_minutes
      )
  
file_path: streamalert/streamalert/shared/lookup_tables/cache.py
imports: import copy
  from datetime import datetime, timedelta
  import random
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 6 for calling the DriverCache obj's underlying member method code with example usage: obj.set_blank(key, ttl_minutes) without return types