'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.'

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')
    if (not self._cache.set(_key(subject_id, entity_id), (timestamp, info))):
        raise CacheError('set    failed')
