mirror of
https://github.com/Hopiu/django-cachalot.git
synced 2026-05-09 21:24:44 +00:00
Removes a useless cache.delete_many call thanks to a clarification.
This commit is contained in:
parent
dfdb845c55
commit
11070fe3c6
1 changed files with 11 additions and 12 deletions
|
|
@ -9,41 +9,40 @@ class AtomicCache(dict):
|
|||
def __init__(self, parent_cache):
|
||||
super(AtomicCache, self).__init__()
|
||||
self.parent_cache = parent_cache
|
||||
self.to_be_deleted = set()
|
||||
self.deleted = set()
|
||||
self.to_be_invalidated = set()
|
||||
|
||||
def get(self, k, default=None):
|
||||
if k in self.to_be_deleted:
|
||||
if k in self.deleted:
|
||||
return default
|
||||
if k in self:
|
||||
return self[k]
|
||||
return self.parent_cache.get(k, default)
|
||||
|
||||
def set(self, k, v):
|
||||
if k in self.to_be_deleted:
|
||||
self.to_be_deleted.remove(k)
|
||||
if k in self.deleted:
|
||||
self.deleted.remove(k)
|
||||
self[k] = v
|
||||
|
||||
def delete(self, k):
|
||||
self.to_be_deleted.add(k)
|
||||
|
||||
def get_many(self, keys):
|
||||
data = dict([(k, self[k]) for k in keys if
|
||||
k in self and k not in self.to_be_deleted])
|
||||
data = dict([(k, self[k]) for k in keys if k in self])
|
||||
missing_keys = set(keys)
|
||||
missing_keys.difference_update(self.deleted)
|
||||
missing_keys.difference_update(data)
|
||||
data.update(self.parent_cache.get_many(missing_keys))
|
||||
return data
|
||||
|
||||
def set_many(self, data):
|
||||
self.to_be_deleted.difference_update(data)
|
||||
self.deleted.difference_update(data)
|
||||
self.update(data)
|
||||
|
||||
def delete_many(self, keys):
|
||||
self.to_be_deleted.update(keys)
|
||||
self.deleted.update(keys)
|
||||
for k in keys:
|
||||
if k in self:
|
||||
del self[k]
|
||||
|
||||
def commit(self):
|
||||
_invalidate_tables_cache_keys(self.parent_cache,
|
||||
list(self.to_be_invalidated))
|
||||
self.parent_cache.set_many(self)
|
||||
self.parent_cache.delete_many(self.to_be_deleted)
|
||||
|
|
|
|||
Loading…
Reference in a new issue