# US 10,482,022 B2 · Custom caching

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,482,022 B2
- Document ID: US10482022B2
- Status: Granted
- Kind: B2
- Application number: 15/408,156
- Filed: 2017-01-17
- Published: 2017-07-13
- Granted: 2019-11-19
- Earliest claimed: 2003-12-08
- Assignees: Paypal, Inc.
- Applicants: PayPal, Inc.
- Inventors: Christopher J. Kasten; Greg Seitz
- Web page: https://patentgrep.com/patent/US10482022B2

## CPC

- G06F 12/0875: with dedicated cache, e.g. instruction or stack
- G06F 9/5016: {the resource being the memory}
- G06F 9/54: Interprogram communication
- G06F 12/0808: with cache invalidating means (G06F12/0815 takes precedence)
- G06F 12/128: adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
- G06F 16/2272: {Management thereof}
- G06F 16/2455: Query execution
- G06F 16/24552: {Database cache management}
- G06F 16/2471: {Distributed queries}
- G06F 16/40: of multimedia data, e.g. slideshows comprising image and additional audio data (retrieval of still image data G06F16/50; retrieval of audio data G06F16/60; retrieval of video data G06F16/70)
- G06F 12/12: Replacement control
- G06F 2212/452: Instruction code
- G06F 2212/465: Structured object, e.g. database record
- Y10S 707/99933: Query processing, i.e. searching
- Y10S 707/99944: Object-oriented database structure
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

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.

## Claims

### Claim 1

A system for customized caching, comprising:
a processor; and
a storage medium having instructions stored thereon that are executable to cause the system to perform operations comprising:
receiving, via an application programming interface (API) call from a client application, a request to create a customized cache instance for the client application;
acquiring configuration information, including key manager information, for the customized cache instance;
establishing the customized cache instance using the configuration information;
returning, to the client application, a cache reference to the customized cache instance;
receiving, based on the cache reference, a data request from the client application to access requested data within the customized cache instance, the data request including an application-generated key that is usable to determine a location of the requested data within a data store of the customized cache instance;
locating the requested data using the application-generated key; and
returning, to the client application, the requested data.

### Claim 2 (depends on 1)

The system of claim 1, wherein the client application is a multi-threaded application, and wherein the request is received from a particular thread of the multi-threaded application.

### Claim 3 (depends on 1)

The system of claim 1, wherein the configuration information includes an identifier for a data source and a mechanism for acquiring data from the data source.

### Claim 4 (depends on 1)

The system of claim 1, wherein the customized cache instance is a cache that includes an abstracted and encapsulated version of a cache store.

### Claim 5 (depends on 1)

The system of claim 1, wherein the operations further comprise:
establishing the customized cache instance as a thread local-only cache for a particular thread of the client application, wherein the thread local-only cache is not accessible by other threads.

### Claim 6 (depends on 1)

The system of claim 1, wherein the operations further comprise:
establishing the customized cache instance as a global cache for the client application, wherein data in the global cache is accessible by a plurality of threads of the client application using the API.

### Claim 7 (depends on 1)

The system of claim 1, wherein data in the data store is not directly accessible by the client application, and instead requires use of the API for access by the client application.

### Claim 8

A method, comprising:
receiving, at custom caching computer system via an application programming interface (API) call from a client application, a request to create a customized cache instance for the client application;
the caching computer system receiving configuration information for the customized cache instance from the client application;
establishing the customized cache instance using the configuration information;
returning, to the client application, a cache reference to the customized cache instance;
receiving, via the API, a data request from the client application to access requested data within the customized cache instance, the data request including a key generated by the client application that is usable to determine a location of the requested data within a data store of the customized cache instance;
locating the requested data using the key; and
returning, to the client application, the requested data.

### Claim 9 (depends on 8)

The method of claim 8, wherein establishing the customized cache instance includes storing a pointer to a key manager based on key manager information included in the configuration information.

### Claim 10 (depends on 9)

The method of claim 9, wherein the key manager includes information specifying a plurality of key definitions, each usable to locate an identifier within a specified type of data object to uniquely identify instances of that type of data object.

### Claim 11 (depends on 8)

The method of claim 8, further comprising evicting data from the data store in accordance with a cache eviction policy.

### Claim 12 (depends on 8)

The method of claim 8, wherein the customized cache instance is a local instance accessible only by a particular thread of a plurality of threads of the client application.

### Claim 13 (depends on 8)

The method of claim 8, wherein the customized cache instance is a global instance accessible by a plurality of threads of the client application.

### Claim 14 (depends on 8)

The method of claim 8, further comprising acquiring, by the custom caching system, a plurality of data objects for the customized cache instance via a plurality of disparate data sources.

### Claim 15 (depends on 8)

The method of claim 8, wherein the configuration information includes key manager information comprising a pointer to a key manager having one or more key definitions.

### Claim 16 (depends on 8)

The method of claim 8, wherein the client application is running on the custom caching computer system.

### Claim 17

A method, comprising:
making an application programming interface (API) call, by a client application running on a computer system, to request creation of a customized cache instance for the client application;
passing configuration information, by the client application, to a custom caching service, wherein the configuration information includes key manager information;
receiving, at the client application, an indication that the customized cache instance has been created by the caching service, wherein data within the customized cache instance is not directly accessible by the client application but is accessibly by the client application via the API;
making a data request to the caching service, by the client application via the API, to access requested data within the customized cache instance, the data request including a key that is usable to determine a location of the requested data within a data store of the customized cache instance; and
the client application receiving the requested data from the caching service.

### Claim 18 (depends on 17)

The method of claim 17, wherein the customized cache instance is a local cache instance accessibly only by a particular thread of a plurality of threads of the client application.

### Claim 19 (depends on 17)

The method of claim 17, wherein the key manager information includes information specifying a plurality of key definitions, each usable to locate an identifier within a specified type of data object to uniquely identify instances of that type of data object.
