IP Library › Granted Patent US 12,619,540
Granted Patent B2
US 12,619,540 · App. 18/667,737 · Granted May 5, 2026

Techniques for multi-tiered data storage in multi-tenant caching systems

Inventors: Yu Gu (Austin, TX); Hongqin Song (Austin, TX)
Assignee: Visa International Service Association
G06F12/084G06F12/0811G06F12/0824G06F12/0871G06F12/0891G06F2212/283
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,619,540
App. No.
18/667,737
Granted
May 5, 2026
Kind
B2
Abstract

Embodiments of the invention are directed to systems and methods for utilizing a multi-tiered caching architecture in a multi-tenant caching system. A portion of the in-memory cache may be allocated as dedicated shares (e.g., dedicated allocations) that are each dedicated to a particular tenant, while another portion of the in-memory cache (e.g., a shared allocation) can be shared by all tenants in the system. When a threshold period of time has elapsed since data stored in a dedicated allocation has last been accessed, the data may be migrated to the shared allocation. If data is accessed from the shared allocation, it may be migrated back to the dedicated allocation. Utilizing the techniques for providing a multi-tiered approach to a multi-tenant caching system can increase performance and decrease latency with respect to conventional caching systems.

Claims (61)

1 . A computer-implemented method, comprising:

providing, by a computing device, a plurality of dedicated allocations and a shared allocation of a cache, a dedicated allocation of the plurality of dedicated allocations being associated with an entity of a plurality of entities, the shared allocation of the cache being available for storage to each of the plurality of entities;

receiving, by the computing device from another computing device associated with the entity, a data request requesting data to be retrieved from the cache;

providing, by the computing device from the shared allocation, the data requested by the data request;

in response to identifying that the shared allocation and the dedicated allocation are full:

evicting, by the computing device, an amount of data from the shared allocation of the cache based on identifying the amount of data as being oldest in the shared allocation of the cache; and

migrating, by the computing device, an oldest instance of data from the dedicated allocation associated with the entity to the shared allocation of the cache; and

moving, by the computing device, the data requested by the data request from the shared allocation to the dedicated allocation associated with the entity.

2 . The computer-implemented method of claim 1 , further comprising:

determining that the dedicated allocation of the cache has available space, wherein moving the data requested by the data request is performed when the dedicated allocation of the cache is determined to have available space.

3 . The computer-implemented method of claim 1 , further comprising:

determining that the dedicated allocation of the cache has available space,

when the dedicated allocation of the cache is full:

determining whether the shared allocation of the cache is full;

when the shared allocation of the cache is not full, migrating a new oldest instance of data from the dedicated allocation associated with the entity to the shared allocation of the cache; and

storing the data requested by the data request in the dedicated allocation associated with the entity.

4 . The computer-implemented method of claim 1 , further comprising:

determining a plurality of hit ratios corresponding to each entity of the pluralities of entities, each hit ratio identifying a percentage of caching requests that result in requested data being found in the cache, wherein evicting the amount of data from the shared allocation of the cache is further based at least in part on the plurality of hit ratios.

5 . The computer-implemented method of claim 1 , further comprising:

determining whether the data is stored in the dedicated allocation of the cache;

when the data is stored in the dedicated allocation, determining whether the data is stored in the shared allocation;

when the data is not stored in the shared allocation, returning an indication that the data was not found.

6 . The computer-implemented method of claim 1 , further comprising:

determining whether the dedicated allocation of the cache has available space; and

when the dedicated allocation of the cache has available space, storing the data requested by the data request in the dedicated allocation associated with the entity.

7 . The computer-implemented method of claim 1 , further comprising:

receiving, by the computing device from another computing device associated with the entity, a second caching request comprising second data to be cached; and

when the shared allocation of the cache is full:

evicting, by the computing device, a second amount of data from the shared allocation of the cache based on identifying the second amount of data as being oldest in the shared allocation of the cache;

migrating, by the computing device, a new oldest instance of data from the dedicated allocation associated with the entity to the shared allocation of the cache; and

storing, by the computing device, the second data received in the second caching request in the dedicated allocation associated with the entity.

8 . The computer-implemented method of claim 7 , further comprising:

determining whether the dedicated allocation of the cache is full, the dedicated allocation being associated with the entity; and

when the dedicated allocation of the cache has available space, storing the second data received in the data request in the dedicated allocation associated with the entity.

9 . A computing device, comprising:

a processor;

a cache comprising a plurality of dedicated allocations and a shared allocation, a dedicated allocation of the plurality of dedicated allocations being associated with an entity of a plurality of entities, the shared allocation of the cache being available for storage to each of the plurality of entities; and

one or more memories storing executable instructions that, when executed by the processor, cause the computing device to:

receive, from a second computing device associated with the entity, a data request requesting data to be retrieved from the cache;

provide, from the shared allocation, the data requested by the data request;

in response to identifying that the shared allocation and the dedicated allocation are full:

evict an amount of data from the shared allocation of the cache based on identifying the amount of data as being oldest in the shared allocation of the cache; and

migrate an oldest instance of data from the dedicated allocation associated with the entity to the shared allocation of the cache; and

move the data requested by the data request from the shared allocation to the dedicated allocation associated with the entity.

10 . The computing device of claim 9 , wherein executing the instructions further causes the computing device to:

identify a hit ratio threshold specifying an amount of data requests that are to result in corresponding data being found in the cache;

monitor corresponding hit ratios of data requests submitted by the plurality of entities; and

provide a notification to the entity when a hit ratio associated with the entity falls below the hit ratio threshold.

11 . The computing device of claim 9 , wherein the amount of data of the shared allocation of the cache is evicted further based at least in part on identifying first data corresponding to a first entity with a highest hit ratio of a plurality of hit ratios corresponding to the plurality of entities.

12 . The computing device of claim 9 , wherein executing the instructions further causes the computing device to:

store the data in the dedicated allocation associated with the entity when the dedicated allocation corresponding to the entity has available space.

13 . The computing device of claim 9 , wherein executing the instructions further causes the computing device to:

receive, from another computing device associated with the entity of the plurality of entities, a caching request identifying second data to be cached;

store the second data to be cached in the dedicated allocation when the dedicated allocation has space.

14 . The computing device of claim 13 , wherein executing the instructions further causes the computing device to:

determine whether the shared allocation has available space when the dedicated allocation is full;

move a corresponding oldest instance of data of the dedicated allocation to the shared allocation based on determining that the dedicated allocation is full and the shared allocation has available space.

15 . The computing device of claim 14 , wherein executing the instructions further causes the computing device to evict third data from the shared allocation when the dedicated allocation and the shared allocation are both full.

16 . The computing device of claim 9 , wherein utilizing the plurality of dedicated allocations and the shared allocation decreases an overall latency associated with of data requests submitted by the plurality of entities.

17 . The computing device of claim 9 , wherein the plurality of dedicated allocations are equal in size.

18 . The computing device of claim 9 , wherein executing the instructions further causes the computing device to maintain a mapping identifying each of the plurality of entities to a particular corresponding dedicated allocation of the cache.

Continuity (2)
Continuation 17764879
Related Publication 20250355807A1 · Nov 20, 2025
References Cited (33)
US 8117418B1 · Metcalf et al. · 2012 [cited by applicant]
US 9852076B1 · Garg et al. · 2017 [cited by applicant]
US 10664462B2 · Gurajada et al. · 2020 [cited by applicant]
US 10691613B1 · Tong · 2020 [cited by examiner]
US 12019551B2 · Gu et al. · 2024 [cited by applicant]
US 20020108016A1 · Haines · 2002 [cited by examiner]
US 20030126365A1 · Jamil et al. · 2003 [cited by applicant]
US 20030204787A1 · Bartucca et al. · 2003 [cited by applicant]
US 20130138891A1 · Chockler et al. · 2013 [cited by applicant]
US 20130282933A1 · Jokinen et al. · 2013 [cited by applicant]
US 20130346693A1 · Zhang · 2013 [cited by applicant]
US 20140012936A1 · Aikoh et al. · 2014 [cited by applicant]
US 20150052314A1 · Fujii et al. · 2015 [cited by applicant]
US 20150095581A1 · Stairs et al. · 2015 [cited by applicant]
US 20160210044A1 · Mitkar et al. · 2016 [cited by applicant]
US 20160342522A1 · Lin et al. · 2016 [cited by applicant]
US 20170116135A1 · Sundaravaradan et al. · 2017 [cited by applicant]
US 20170374151A1 · Moorthi et al. · 2017 [cited by applicant]
US 20180060238A1 · Esser et al. · 2018 [cited by applicant]
US 20180165200A1 · Sethuraman · 2018 [cited by applicant]
US 20190121567A1 · Kim et al. · 2019 [cited by applicant]
US 20190179755A1 · Mudumbai et al. · 2019 [cited by applicant]
US 20190303294A1 · Heirman · 2019 [cited by examiner]
US 20210157740A1 · Benhanokh et al. · 2021 [cited by applicant]
Kim et al., “A Hybrid Cache Architecture for Meeting Per-Tenant Performance Goals in a Private Cloud”, Computer Science, arXiv:1906.01260v1, Jun. 4, 2019 (Year: 2019). [cited by examiner]
Written Opinion, mailed Jan. 1, 2025, for Singapore Patent Application No. SG11202202915P, 10 pages. [cited by applicant]
International Search Report and Written Opinion, mailed Jul. 2, 2020, Application No. PCT/US2019/054860, 10 pages. [cited by applicant]
International Preliminary Report on Patentability, mailed Apr. 14, 2022, Application No. PCT/US2019/054860, 7 pages. [cited by applicant]
Extended European Search Report, mailed Sep. 21, 2022, Application No. EP19947834.8, 13 pages. [cited by applicant]
Non-Final Office Action, mailed Dec. 14, 2023, U.S. Appl. No. 17/764,879, 11 pages. [cited by applicant]
Notice of Allowance, mailed Feb. 22, 2024, U.S. Appl. No. 17/764,879, 10 pages. [cited by applicant]
Kim et al., “A Hybrid Cache Architecture for Meeting Per-Tenant Performance Goals in a Private Cloud”, Computer Science, arXiv:1906.01260v1, Jun. 4, 2019, 11 pages. [cited by applicant]
Written Opinion, mailed Mar. 26, 2025, in Singapore Application No. SG11202202915P, 11 pages. [cited by applicant]