diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py
--- a/rhodecode/model/db.py
+++ b/rhodecode/model/db.py
@@ -305,15 +305,25 @@ class User(Base, BaseModel):
             return self.__class__.__name__
 
     @classmethod
-    def get_by_username(cls, username, case_insensitive=False):
+    def get_by_username(cls, username, case_insensitive=False, cache=False):
         if case_insensitive:
-            return Session.query(cls).filter(cls.username.ilike(username)).scalar()
+            q = cls.query().filter(cls.username.ilike(username))
         else:
-            return Session.query(cls).filter(cls.username == username).scalar()
+            q = cls.query().filter(cls.username == username)
+
+        if cache:
+            q = q.options(FromCache("sql_cache_short",
+                                    "get_user_%s" % username))
+        return q.scalar()
 
     @classmethod
-    def get_by_api_key(cls, api_key):
-        return cls.query().filter(cls.api_key == api_key).one()
+    def get_by_api_key(cls, api_key, cache=False):
+        q = cls.query().filter(cls.api_key == api_key)
+
+        if cache:
+            q = q.options(FromCache("sql_cache_short",
+                                    "get_api_key_%s" % api_key))
+        q.one()
 
     def update_lastlogin(self):
         """Update user lastlogin"""
@@ -1083,6 +1093,7 @@ class CacheInvalidation(Base, BaseModel)
         Session.add(inv_obj)
         Session.commit()
 
+
 class DbMigrateVersion(Base, BaseModel):
     __tablename__ = 'db_migrate_version'
     __table_args__ = {'extend_existing':True}