'Attempt to fetch value from the database. If successful,
also set it back in the cache.
Returns None in both cases, if the key doesn\'t actually exist,
or if we errored fetching it.
NOTE: This behavior should probably be improved to differentiate
between a miss vs error, but not worth it now since the value
is limited at the moment.'

def get_store(self, key, silent=False):

    try:
        value = self.model.objects.get(key=key.name).value
    except self.model.DoesNotExist:
        value = None
    except Exception as e:
        if (not silent):
            logger.exception(six.text_type(e))
        value = None
    else:
        try:
            self.set_cache(key, value)
        except Exception:
            if (not silent):
                logger.warn(CACHE_UPDATE_ERR, key.name, exc_info=True)
    return value
