"Custom cache backend" # Add following to your settings.py # ------------ # settings same as for memcached # CACHE_BACKEND = 'custom_cache://127.0.0.1:11211/' # CACHE_MIDDLEWARE_KEY_PREFIX = 'site_prefix_' from django.core.cache.backends import memcached from django.utils.encoding import smart_unicode, smart_str from django.conf import settings class CacheClass(memcached.CacheClass): def __init__(self, server, params): super(CacheClass, self).__init__(server, params) self._prefix = getattr(settings, "CACHE_MIDDLEWARE_KEY_PREFIX", "") def _key(self, key, is_list=False): if is_list: keys = [] for k in key: keys.append("%s%s" % (self._prefix, k)) return keys else: return "%s%s" % (self._prefix, key) def add(self, key, value, timeout=0): return super(CacheClass, self).add(self._key(key), value, timeout) def get(self, key, default=None): return super(CacheClass, self).get(self._key(key), default) def set(self, key, value, timeout=0): super(CacheClass, self).set(self._key(key), value, timeout) def delete(self, key): super(CacheClass, self).delete(self._key(key)) def get_many(self, keys): return super(CacheClass, self).get_many(self._key(keys, True)) def close(self, **kwargs): super(CacheClass, self).close(**kwargs) def incr(self, key, delta=1): return super(CacheClass, self).incr(self._key(key), delta) def decr(self, key, delta=1): return super(CacheClass, self).decr(self._key(key), delta)