1. A method comprising: in a storage system that includes a cache implemented in non-volatile solid-state storage, classifying data to be stored in the cache into a plurality of data classes, based on expected usage of the data; making write allocation decisions for the cache by executing a cache replacement process that concurrently applies cache hit optimization and wear optimization for the cache, wherein making the write allocation decisions includes assigning each of a plurality of regions of the non-volatile solid-state storage to store data of a different data class of the plurality of data classes, such that each region of the plurality of regions is assigned to store data of only one data class of the plurality of classes; determining, individually for each of the plurality of regions of the non-volatile solid-state storage, whether to apply a circular first-in first-out (FIFO) replacement algorithm or an exception to the circular FIFO replacement algorithm to data stored in said region; defining a first data class, of the plurality of data classes, to include data which are expected to remain valid in the cache for at least a complete cycle of a circular FIFO cache replacement log and that is replaced in the cache upon expiration of a complete cycle of the cache replacement log in an event that the data are determined not to be recently used, wherein data in the cache is invalidated when it is logically overwritten or deleted; defining a second data class, of the plurality of data classes, to include data which are expected to remain valid in the cache for less than a complete cycle of the cache replacement log; and writing to locations in the cache according to the write allocation decisions.