你是否正在使用缓存 API?听起来是这样的。
这篇帖子,它指向了这些幻灯片,帮助我创建了一个很好的生成缓存系统,让我创建了我想要的层次结构。
简而言之,您在缓存中存储一组键(例如group
),并将存储的值合并到键创建函数中,以便可以一次性使整个键集无效。
有了这个基本概念,您可以创建高度复杂的层次结构或仅创建一个简单的分组系统。
例如:
class Cache(object):
def generate_cache_key(self, key, group=None):
"""
Generate a cache key relating them via an outside source (group)
Generates key such as 'group-1:KEY-your-key-here'
Note: consider this pseudo code and definitely incomplete code.
"""
key_fragments = [('key', key)]
if group:
key_fragments.append((group, cache.get(group, '1')))
combined_key = ":".join(['%s-%s' % (name, value) for name, value in key_fragments)
hashed_key = md5(combined_key).hexdigest()
return hashed_key
def increment_group(self, group):
"""
Invalidate an entire group
"""
cache.incr(group)
def set(self, key, value, group=None):
key = self.generate_cache_key(key, group)
cache.set(key, value)
def get(self, key, group=None):
key = self.generate_cache_key(key, group)
return cache.get(key)
>>> cache = Cache()
>>> cache.set('key', 'value', 'somehow_related')
>>> cache.set('key2', 'value2', 'somehow_related')
>>> cache.increment_group('somehow_related')
>>> cache.get('key')
>>> cache.get('key2')