svleeuwen
1/8/2014 - 9:42 AM

Dynamic caching key generation

Dynamic caching key generation

from django.core.cache import cache


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])
        return combined_key
        
	#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)