diff --git a/limpyd/model.py b/limpyd/model.py
index <HASH>..<HASH> 100644
--- a/limpyd/model.py
+++ b/limpyd/model.py
@@ -373,12 +373,13 @@ class RedisModel(RedisProxyCommand):
                     raise e
                 else:
                     # Clear the cache for each cacheable field
-                    for field_name, value in kwargs.items():
-                        field = field = getattr(self, field_name)
-                        if not field.cacheable or not field.has_cache():
-                            continue
-                        field_cache = field.get_cache()
-                        field_cache.clear()
+                    if self.cacheable:
+                        for field_name, value in kwargs.items():
+                            field = field = getattr(self, field_name)
+                            if not field.cacheable or not field.has_cache():
+                                continue
+                            field_cache = field.get_cache()
+                            field_cache.clear()
 
                     return result
         except Exception, e:
Optimize hmset to not clear cache if not cacheable

Instead of testing each field for cacheability in all cases, we do it
only if the object is cacheable.