Caching ElementCriteria Lookups In Craft CMS Plugins
I have figured it out, but am not sure if this is the best way so could still use some advice.

# Get a unique hash of your search criteria (still figuring this out).
$hash = md5(json_encode($projectCriterea));

# Look up the cache
$cache = craft()-&gt;cache-&gt;get($hash);

# Did we find this search criterea in the cache already? If so, return it.
if ($cache) {
    return $cache;
}

# No cache? Do searchy business
# ...
$projects = $projectCriterea-&gt;find();
# ...

# Save to the cache
if ($cache === false) {
    craft()-&gt;cache-&gt;set($hash, $projects, 604800); # Cache for 1 week
}

return $projects;