code: def set(self, subject_id, entity_id, info, timestamp=0):
          
          entities = self._cache.get(subject_id)
          if not entities:
              entities = []
              subjects = self._cache.get("subjects")
              if not subjects:
                  subjects = []
              if subject_id not in subjects:
                  subjects.append(subject_id)
                  if not self._cache.set("subjects", subjects):
                      raise CacheError("set failed")
  
          if entity_id not in entities:
              entities.append(entity_id)
              if not self._cache.set(subject_id, entities):
                  raise CacheError("set failed")
  
          # Should use memcache's expire
          if not self._cache.set(_key(subject_id, entity_id), (timestamp, info)):
              raise CacheError("set failed")
docs: Stores session information in the cache. Assumes that the subject_id
          is unique within the context of the Service Provider.
  
          :param subject_id: The subject identifier
          :param entity_id: The identifier of the entity_id/receiver of an
              assertion
          :param info: The session info, the assertion is part of this
          :param timestamp: A time after which the assertion is not valid.