react-native-cachemere
v1.2.0
Published
An async cache manager for React Native
Downloads
981
Readme
react-native-cachemere
An async cache manager.
Install
Since AsyncStorage
has been removed from the React Native core, you first need to install @react-native-community/async-storage. Then,
yarn add react-native-cachemere
Example
import Cache from 'react-native-cachemere'
const getData = async () => {
const CACHE_KEY = `my_cache_key`;
// First, try to get data from cache
const cachedData = await Cache.get(CACHE_KEY);
if (cachedData) {
return cachedData
}
// If no cache is set, get data from server
const data = await getDataFromServer();
// Then, cache that data
const INVALIDATE_AFTER = 3; // the number of attempts after which the cache is invalidated
// if set to null, cache is only invalidated after TTL expires
const TTL = Cache.TTL_12H; // cache for 12h
await Cache.set(CACHE_KEY, data, TTL, INVALIDATE_AFTER);
return data
}
Usage
set
await Cache.set(key, data, ttl, attempts)
key
is a string used to set and get the cached data.
data
must be serializable object.
ttl
is expressed in seconds. There are some standard TTLs exposed by the lib.
Cache.TTL_12H = 43200
Cache.TTL_8H = 28800
Cache.TTL_6H = 21600
Cache.TTL_4H = 14400
Cache.TTL_1H = 3600
attempts
is an integer. Cache is invalidated after this number of attempts. If left unset (or set to null
), cache is only invalidated after TTL expires.
get
await Cache.get(key)
Returns the data as a parsed JSON. If there's no cached data for that key
or that data cache has expired, returns null
.
When cache expires it is automatically cleared from the storage.
getAll
const all = await Cache.getAll()
Returns an array with all cached objects, parsed.
clear
await Cache.clear(key)
Cache is removed for the specified key
.
clearExpired
await Cache.clearExpired()
Remove all expired cache. Can be called at app startup to ensure a decluttered Storage.
clearByRegex
await Cache.clearByRegex(regex)
Remove all cache with keys that pass the regex
condition.
Can be used when fetching the data with pagination and need to cache every group of data received.