Lets say you have a huge list of models that you want to cache as the result of a query. All of those models are already in the database and cloning them into some separate cache would be a big waste of resources. Instead you provide a setter which extracts the keys from those models and stores the keys, and a getter which takes those keys and returns the models.