Methods and systems are presented for custom caching. Application threads
define caches. The caches may be accessed through multiple index keys,
which are mapped to multiple application thread-defined keys. Methods
provide for the each index key and each application thread-defined key to
be symmetrical. The index keys are used for loading data from one or more
data sources into the cache stores on behalf of the application threads.
Application threads access the data from the cache store by providing
references to the caches and the application-supplied keys. Some data
associated with some caches may be shared from the cache store by
multiple application threads. Additionally, some caches are exclusively
accessed by specific application threads.